Code: Select all
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// When we click a button, this happens.
private async void start_Click(object sender, EventArgs e)
{
await Task.Run(() => Work());
// When iterations are set to more than 10,000 in 'Work' method,
// this never runs.
Debug.WriteLine("Successfully Left Await!");
}
private void Work()
{
for (int i = 0; i < 10001; i++)
{
BeginInvoke(() =>
{
label1.Text = i.ToString();
});
}
// This always runs successfully.
Debug.WriteLine("Made Sure the Loop successfully finished!");
}
}
< /code>
Was wir hier haben, ist ein sehr einfacher Code in Windows -Formularen. Wir haben eine Methode, die ausgeführt wird, wenn wir auf eine Schaltfläche klicken. Diese Methode führt die "Arbeit" -Methode in 'Task.run ()' aus und wartet dann auf die Aufgabe. Erfolgreich warten! '. Das faszinierende Ding ist: [b] es wird es niemals erreichen [/b]. Der Ausführungsfluss stoppt für immer an der erwarteten Zeile, auch wenn die Methode schließlich abgeschlossen ist. >, es funktioniert. Zu warten und wir haben es auch in einen Beginninvoke