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是一个明智的选择——它会让你(甚至)处于完全混乱的状态。如果你是通过 http 上传,你可以尝试使用 async 方法,允许你调用,这样更友好一点。AppDomainProcessHttpWebRequest.Abort

于 2010-07-14T06:01:27.523 回答
0

顺便说一句,这只是补充马克所说的,这个答案可能有助于理解为什么.Abort不是一个好的选择。

于 2010-07-14T06:09:55.493 回答