Ich habe eine lange Verarbeitung in meinem Winform, wenn ich auf eine Schaltfläche klicke; nämlich lade ich viele Dateien und verarbeite sie. Für die Dauer der Verarbeitung ist meine GUI eingefroren und reagiert nicht mehr, was ein Problem darstellt, da die Verarbeitung mehr als 10 Minuten dauern kann. Gibt es eine Möglichkeit, den Code in eine Art Bubble oder ähnliches zu setzen, damit ich die GUI während der Verarbeitung der Dateien verwenden kann? Vielleicht fügen Sie sogar die Schaltfläche "Abbrechen" hinzu.Responsive GUI während der Verarbeitung aktivieren
EDIT: René-Lösung arbeitet, auch hier ist progressbar
Kontrolle Ich wollte auch:
private async void button1_Click(object sender, EventArgs e)
{
progressBar1.Maximum = ValueWithTOtalNumberOfIterations.Length;
IProgress<int> progress = new Progress<int>(value => { progressBar1.Value = value;});
await Task.Run(() =>
{
var tempCount = 0;
//long processing here
//after each iteration:
if (progress != null)
{
progress.Report((tempCount));
}
tempCount++;
}
}
Blick auf async/erwarten https://msdn.microsoft.com/en-us/library/mt674882.aspx –
Sie Background verwenden können. Verweisen Sie auf diesen Link - https://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx Verwenden Sie die CancelAsync-Methode, um den Vorgang abzubrechen. – Sanket
Ja, es gibt verschiedene Möglichkeiten, dies zu erreichen. Sie sollten wahrscheinlich nach async-await suchen (wenn Sie net fw 4.5 oder höher verwenden), da Sie dies bereits richtig getaggt haben und dann mit Ihrem Versuch kommen;) – Mono