バックグラウンドワーカーをキャンセルするには、C#で指定時間後にキャンセルするか、キャンセルしてください。指定された時間後にバックグラウンドワーカーをキャンセルする方法#
4
A
答えて
3
このチュートリアルチェックアウト:キャンセルをサポートするSystem.ComponentModel.BackgroundWorkerスレッドのためにhttp://www.albahari.com/threading/part3.aspx
を、あなたがスレッドを起動する前にTrueにWorkerSupportsCancellationプロパティを設定する必要があります。
その後、BackgroundWorkerの.CancelAsyncメソッドを呼び出してスレッドをキャンセルすることができます。
0
BackgroundWorkerにはどちらのケースもサポートされていません。 これらのケースをサポートするためのコードの一部がここにあります。
class MyBackgroundWorker :BackgroundWorker {
public MyBackgroundWorker() {
WorkerReportsProgress = true;
WorkerSupportsCancellation = true;
}
protected override void OnDoWork(DoWorkEventArgs e) {
var thread = Thread.CurrentThread;
using(var cancelTimeout = new System.Threading.Timer(o => CancelAsync(), null, TimeSpan.FromMinutes(1), TimeSpan.Zero))
using(var abortTimeout = new System.Threading.Timer(o => thread.Abort(), null, TimeSpan.FromMinutes(2), TimeSpan.Zero)) {
for(int i = 0; i <= 100; i += 20) {
ReportProgress(i);
if(CancellationPending) {
e.Cancel = true;
return;
}
Thread.Sleep(1000); //do work
}
e.Result = "My Result"; //report result
base.OnDoWork(e);
}
}
}
+0
'Task.Delay'はThread.Sleep''の2017年版です。 – mayu
関連する問題
- 1. 指定された時間後にUICollectionViewCellをフェードアウトする方法
- 2. alarmManagerを指定された時間に設定する方法
- 3. 一定時間後にゴルーチンをキャンセルする方法
- 4. バックグラウンドワーカーでDoWorkをキャンセルする方法
- 5. 指定された時間プログラムを実行する方法は?
- 6. 指定された時間
- 7. 指定した時間後にUrlFetchApp.fetchをキャンセルする方法はありますか?
- 8. 指定時間後にタイマーを停止する方法
- 9. 指定したタイムアウト後にタスクがキャンセルされない
- 10. 指定時間後にVBコンソールアプリケーションを閉じる方法
- 11. 定期的なタスクで指定された時間をスキップする方法
- 12. 指定された範囲の時間
- 13. PHP:指定された時間のエコーメッセージ
- 14. スパークコーディネーターで時間指定されたスパークジョブの特定の時間を取得する方法
- 15. 指定された時間間隔でメソッドを実行する
- 16. 一定時間後にURL接続をキャンセルする
- 17. Xamarin Androidが一定時間後にバックグラウンド通知をキャンセルする
- 18. ffmpegでMacで時間指定された画面をキャプチャする方法
- 19. 指定された時間後にmanagedexecutorserviceを使用しているシャットダウンスレッド
- 20. JMeter:定義された時間後にパフォーマンステスト全体を停止する方法
- 21. 指定された期間後にNSUserDefaultsをクリアするiPhone
- 22. 指定された時間間隔で、指定された距離内にあるジオメトリポイントを確認する方法が必要です
- 23. Windowsサービス:指定された時間に作業する(Delphi)
- 24. のpython:threading.Timerは、指定時間後に
- 25. PHP時間または分の年を指定する方法
- 26. 指定された時間ごとにwxPython.NotificationMessageを呼び出す
- 27. 指定された時間範囲のページを更新する
- 28. メソッド/関数を指定された時間実行する
- 29. mysqlの行が指定された時間だけ繰り返す方法は?
- 30. 指定された時間間隔でRスクリプトを実行
私は上記の記事を読みましたが、私はどのようなあなたの呼び出し元のスレッドでSystem.Threading.Timerオブジェクトを作成し、約1分後に –
私のバックグラウンドワーカーを終了し、1分間に設定する必要があります。タイマーイベントが発生すると、BackgroundWorkerスレッドの.CancelAsyncメソッドを呼び出します。 – TLiebe