以前にも同じような質問をした方がいらっしゃいましたら申し訳ありません。いくつかのファイルをサーバーにアップロードする単純な GUI アプリがあります。アップロード作業は別スレッドにしました。ユーザーがアプリケーションを終了したい場合、スレッドに正常終了を通知するイベントが設定されます。その後、UI スレッドはそれを待ちます。スレッドを中止するために使用したコードは次のとおりです。
if (mUploadThread != null) {
if (mStopUploadEvent.WaitOne(0, true)) {
string message = @"A normal cancellation may take a couple of minutes. Are you sure you want forcibly abort?";
string caption = @"Warning";
if (DialogResult.Yes == MessageBox.Show(message, caption, MessageBoxButtons.YesNo)) {
mUploadThread.Abort();
}
} else {
mStopUploadEvent.Set();
}
do {
Application.DoEvents();
} while (!mUploadThread.Join(1000));
}
ここでは、ユーザーが必要に応じてワーカー スレッドを終了させたいと考えています。しかし、abort() メソッドは機能しません。どんな提案でも大歓迎です。