Ich schreibe eine fortlaufende Abfrage-Schleife, um nach einigen Ereignissen zu suchen und dann etwas Aktion auf UI-Thread zu nehmen.Taskfortsetzung blockiert UI-Thread
Ich schreibe Code folgende
public static void HandlePopup(this HostedControl control, string className, string caption, System.Action callback)
{
var popupTask = Task.Factory.StartNew(() =>
{
Thread.Sleep(5000); // just wait for 5 seconds.
}, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).ContinueWith((prevTask) =>
{
AutomationElementCollection collection = null;
do
{
} while (true);
}, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()).ContinueWith((prevTask) =>
{
if (!prevTask.IsFaulted)
{
if (control.InvokeRequired)
{
control.Invoke(callback);
}
else
{
callback();
}
}
}, CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
try
{
////popupTask.Wait();
}
catch (AggregateException ex)
{
ex.Handle(exnew =>
{
return true;
});
}
}
Die Do While-Schleife keinen Code jetzt nicht, weil ich das getestet werden soll, wenn ich eine Schleife unendlich die Benutzeroberfläche läuft nicht blockieren, jedoch ist es nicht Arbeiten wie erwartet und wenn der Code diese Schleife ausführt (die nie zurückkehrt), friert die Benutzeroberfläche ein und reagiert nicht mehr, bis ich den Lauf abbruche.
Was soll ich es still im Hintergrund tun, um laufen,
Hinweis: die Eltern, von wo aus diese Methode aufgerufen wird, ist ein Web-Browser-Steuerung s
documentcompelte` Ereignis. Das Webbrowser-Steuerelement befindet sich in Windows Forms-Anwendung.
Ich habe Ihren Titel bearbeitet. Bitte lesen Sie "[Sollten die Fragen" Tags "in ihren Titeln enthalten?] (Http://meta.stackexchange.com/questions/19190/)", wobei der Konsens "nein, sie sollten nicht" lautet. –
Danke, mein Schlechter :( – shashank