Ich möchte die Schaltfläche auf "Send" zurückgesetzt werden (nach Abschluss des Threads). Aber Form sollte nicht warten. Ist das möglich?Dies ist nicht Warteformular, aber Abschlussbenachrichtigung des Threads ist erforderlich
Antwort
du elegant mehr tun können, die BackgroundWorker Klasse.
XAML für den Button:
<Button x:Name="btnGo" Content="Send" Click="btnGo_Click"></Button>
Code:
private BackgroundWorker _worker;
public MainWindow()
{
InitializeComponent();
_worker = new BackgroundWorker();
_worker.WorkerSupportsCancellation = true;
_worker.WorkerReportsProgress = true;
}
private void btnGo_Click(object sender, RoutedEventArgs e)
{
_worker.RunWorkerCompleted += delegate(object completedSender, RunWorkerCompletedEventArgs completedArgs)
{
Dispatcher.BeginInvoke((Action)(() =>
{
btnGo.Content = "Send";
}));
};
_worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
Dispatcher.BeginInvoke((Action)(() =>
{
btnGo.Content = "Cancel";
}));
SendImage sendImage = args.Argument as SendImage;
if (sendImage == null) return;
var count = 0;
while (!_worker.CancellationPending)
{
Dispatcher.BeginInvoke((Action)(() =>
{
btnGo.Content = string.Format("Cancel {0} {1}", sendImage.Name, count);
}));
Thread.Sleep(100);
count++;
}
};
if (_worker.IsBusy)
{
_worker.CancelAsync();
}
else
{
_worker.RunWorkerAsync(new SendImage() { Name = "Test" });
}
}
Dank für ausführliche Antwort zuzuteilen. Aber wie wird '** send.Image **' hier aufgerufen? – SHRI
Sie können Argumente mit dem RunWorkerAsync() -Methodenaufruf übergeben. Ich habe die Probe aktualisiert, wie das geht. –
Machen Sie den Button zu einem Mitglied Ihrer Window/UserControl-Klasse (indem Sie ihm eine Name
in XAML geben). Wenn schließlich der Faden endet, dies zu tun, bevor sie aus dem Thread-Methode zurückkehrt:
myButton.Dispatcher.BeginInvoke(
(Action)(() => myButton.Content = "Send"));
- 1. PHP - Klasse nicht gefunden, ist aber erforderlich
- 2. Ist android.permission.RECEIVE_BOOT_COMPLETED nicht erforderlich?
- 3. Klasse ist erforderlich, aber kein Zugriff möglich
- 4. zmq schlägt fehl, wenn dies erforderlich ist ('zmq')
- 5. Ist volatile hier erforderlich?
- 6. Ist Synchronisation für nicht änderbare Karten erforderlich?
- 7. Mitgliedsfunktion nicht vererbt? Dies ist
- 8. Warum Umbruch ist für Warteschlange erforderlich, aber nicht für Stapel?
- 9. Ansible - FEHLER! Feld ‚Hosts‘ erforderlich ist, wurde aber nicht festgelegt
- 10. Ist dies während des Baus sicher?
- 11. Ist dies mit Sockets möglich?
- 12. Ist der HTTP-Statuscode 426 Upgrade erforderlich, bedeutet dies nur, dass ein Upgrade auf einen sicheren Kanal erforderlich ist?
- 13. Ist der HTTP-Statuscode 426 Upgrade erforderlich, bedeutet dies nur, dass ein Upgrade auf einen sicheren Kanal erforderlich ist?
- 14. Was ist Javascript 'erforderlich'?
- 15. Hintergrundgröße: Cover funktioniert nicht? Dies ist
- 16. WPF MVVM: Prismv4 - Ist es erforderlich, das Microsoft Async CTP zu verwenden, wenn Sie dies verwenden?
- 17. Ist es sinnvoll, findViewById jedes Mal im Aktivitätszyklus aufzurufen, wenn dies erforderlich ist?
- 18. Warum ist eine Rückgabeanweisung hier nicht erforderlich?
- 19. Ist dies ein Listenansicht, und wie dies zu tun ist
- 20. Ist "atomar" hier erforderlich?
- 21. Warum in C# ist dies nicht in Member-Initialisierer erlaubt, aber in VB.Net ist mir erlaubt
- 22. Backbone dies ist undefined
- 23. Scala Play Formular Validierung: erforderlich boolean ist nicht erforderlich
- 24. Ziel .NET 4.0, aber .NET 4.5 ist erforderlich
- 25. Ist ROLLBACK TRANSACTION erforderlich?
- 26. Die Chiffre ‚aes256-cbc‘ erforderlich ist, aber es ist nicht verfügbar
- 27. Django-Rest-Framework POST-Operation: Felder, die nicht leer ist, aber DRF sagt erforderlich ist
- 28. Wann ist IPPROTO_UDP erforderlich?
- 29. asp.net Validierung, wenn Feld nicht erforderlich ist
- 30. call_command Argument ist erforderlich
Wow, 9 Stunden. diesen Link ansehen: http://stackoverflow.com/questions/2773479/how-to-check-if-thread-finished-execution –