Der Hintergrund ist folgender: ich öffne in einer WPF-Anwendung eine View mit ShowDialog, welche nur einen OK-Button hat. Dieser sollte beim Öffnen der View disabled sein, und erst bei im weiteren Verlauf auf enabled geschalten werden (die View bleibt aber immer offen) - ich habe hier schon mit Dependency-Properties gespielt... daher war meine Idee, die View zuerst mit inaktiven OK-Button zu öffnen, dann programmatisch (SendMessage, WM_CLOSE) zu schliessen und wieder mit aktvien OK-Button zu öffnen ...
Kann ich aber mit SendMessage OK oder CANCEL schicken ?
Wie kann ich None senden (SendMessage) ?
Wie kann ich mit SendMessage einer View, welche mit ShowDialog geöffnet wurde, ein DialogResult = null senden (damit ich sie im Programm gezielt mit einem ResultCode schliessen kann - WM_CLOSE liefert DialogResult = Cancel) ?
habe nun bissi getestet und es muss das XmlElement()-Attribut gesetzt sein, dann wird auch xxxSpecified gesetzt
Ich deserialisiere einen xml-String auf die Klasse 'Dummy'.
Im xsd ist das Feld 'num' mandatory und das Feld 'str' optional (minOccurs=0)
public class Dummy {
int numField;
string strField;
bool strFieldSpecified;
public int num {
get {
return this.numField;
}
set {
this.numField = value;
}
}
public string str {
get {
return this.strField;
}
set {
this.strField = value;
}
}
[System.Xml.Serialization.XmlIgnoreAttribute]
public bool strSpecified {
get {
return this.strFieldSpecified;
}
set {
this.strFieldSpecified = value;
}
}
}
Kann man den (De)Serializer veranlassen, den Wert xxxSpecified automatisch zu setzen ?
Ich kann natürlich den Wert beim Setzen der zugehörigen Property selbst setzen, nur müsste ich dann alle optionalen Elemente manuel erweitern:
public string str {
get {
return this.strField;
}
set {
this.strField = value;
this.strFieldSpecified = true;
}
}
Bei WCF Services habe ich bemerkt, dass diese Specified-Felder automatisch gesetzt werden...
Habe eine Applikation, welche in den Programm-Folder installiert wird (C:\Program Files (x86)...').
Dieses Programm versucht ein File (config-File) im Ausführungs-Ordner zu öffnen (ReadOnly).
Bekomme hier aber die Fehlermeldung:
Fehlermeldung:
Access to the Path 'C:\Program Files (x86)...' id denied
Wie kann ich hier den Zugang erteilen ?
Eine Möglichkeit wäre, das File in SpecialFolder.ApplicationData abzulegen - nur wie kann ich diese in Visual Studio referenzieren ?
@herbivore : ja das ist mir klar 😃
Ich habe mir 2 StateObjecte jeweils für Lesen und Schreiben erstellt, welche ich jeweils in BeginRead/BeginWrite mitsende.
Da MSDN folgendes sagt:
Lese- und Schreibvorgänge können gleichzeitig in einer Instanz der NetworkStream-Klasse ausgeführt werden, ohne dass eine Synchronisierung erforderlich ist.
hat jedes StateObject jeweils den selben NetworkStream, welches es zum Lesen bzw. Schreiben verwenden kann...
@weismat : genau für diesen Grund synche ich dann 'ausserhalb' mittels einer Write(Snyc)-Queue.
Verwende nun das asynchrone Muster mit NetworkStream.BeginRead/NetworkStream.BeginWrite Ohne Synchronisierung - konnte in meinen Dauertests (heftiges, gleichzeitiges Lesen/Schreiben) bis dato keine Probleme feststellen.
@weismat:
MSDN sagt folgendes:
Lese- und Schreibvorgänge können gleichzeitig in einer Instanz der NetworkStream-Klasse ausgeführt werden, ohne dass eine Synchronisierung erforderlich ist.Unter der Voraussetzung, dass ein eindeutiger Thread für Schreibvorgänge und ein eindeutiger Thread für Lesevorgänge vorhanden sind, überschneiden sich die Lese- und Schreibthreads nicht, und es ist keine Synchronisierung erforderlich.
soviel ich sehe, habe ich keine Überschneidung von Lese- und Schreibthreads