0

以前にも同じような質問をした方がいらっしゃいましたら申し訳ありません。いくつかのファイルをサーバーにアップロードする単純な 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() メソッドは機能しません。どんな提案でも大歓迎です。

4

2 に答える 2

1

さて、どうやってアップロードしていますか?が賢明な選択であることThread.AbortめったにAppDomainありませんProcess。http 経由でアップロードしている場合は、非同期メソッドを使用して、 を呼び出すことができますHttpWebRequest.Abort。これは、もう少し使いやすいです。

于 2010-07-14T06:01:27.523 に答える
0

ところで、これはマークが言ったことに追加するだけです。この答え.Abortは、なぜそれほど良い選択ではないのかを理解するのに役立つかもしれません.

于 2010-07-14T06:09:55.493 に答える