如果其他人之前曾问过类似的问题,我很抱歉。 我有一个简单的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()方法不起作用。任何建议都表示赞赏。
答案 0 :(得分:1)
嗯,你是怎么上传的? Thread.Abort
很少是一个明智的选择 - 它会让你AppDomain
(甚至Process
)处于一个完全混乱的状态。如果您通过http上传,可以尝试使用异步方法,允许您拨打HttpWebRequest.Abort
,这样会更友好。
答案 1 :(得分:0)
.Abort
不是一个好的选择。