Wir haben ein Bedürfnis, SynchronizationContext zu verwenden, um einen Wert (speziell ein MessageBox DialogResult) über Send zurückzugeben (wir möchten keine asynchrone Übertragung über 'Post'). Bin mir nur nicht sicher über die Syntax. Wir hatten Probleme mit dem MessageBox, das sich hinter dem Hauptfenster verbarg, was vermutlich darauf zurückzuführen war, dass der Hauptformularwert IWin32Window nicht einfach zugänglich war...Wir verwenden dies, aber ehrlich gesagt fühle ich mich damit unwohl.
DialogResult dr;
SynchronizationContext synchContext;
//im Konstruktor des Hauptformulars
{
...
synchContext = AsyncOperationManager.SynchronizationContext;
}
void workerThread( object obj, DoWorkEventArgs args)
{
// SynchronizationContext wird dem Worker-Thread über args übergeben
sc.Send( delegate {dr = MessageBoxEx.Show( "Ja oder nein?", "Weiter?", MessageBoxButtons.OKCancel, MessageBoxIcon.Question );},null);
}