为什么我被ThreadWas中止

时间:2018-10-04 16:03:57

标签: c# rest console-application webclient

我有一个循环运行的程序(控制台应用程序),它必须将一些文件上传到API。

这是我的代码:

Using(WebClient wc = new WebClient())
{
     var serialized = JsonConvert.SerializeObject(rm);

     wc.Headers[HttpRequestHeader.ContentType] = "application/json";
     string myResult = wc.UploadString(URL,serialized);
}

此代码在方法中,并且根据算法处理时间不时调用此方法。例如,我从服务器下载一些文件,然后使用上面的代码将其上传到另一台服务器。然后,我再次下载并上传...

在第一次迭代中,此上传方法正常工作。但是,在第二次迭代中,它给了我一个异常“线程正在中止”。

我以前使用的是HttpClient,我改用WebClient的原因是HttpClient给了我同样的问题。

任何人都可以帮我解决这个问题吗?

异常stackTrace为:

   at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
   at System.Net.ConnectStream.ProcessWriteCallDone(ConnectionReturnResult returnResult)
   at System.Net.HttpWebRequest.CheckDeferredCallDone(ConnectStream stream)
   at System.Net.HttpWebRequest.GetResponse()
   at System.Net.WebClient.GetWebResponse(WebRequest request)
   at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream, CompletionDelegate completionDelegate, AsyncOperation asyncOp)
   at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
   at System.Net.WebClient.UploadString(Uri address, String method, String data)
   at System.Net.WebClient.UploadString(String address, String data)
   at Bizagi.DownloadUpload.UploadHelper.UploadFile(Risk rm, Stopwatch sla) in C:\Users\...\UploadHelper.cs:line 189
   at Bizagi.DownloadUpload.UploadHelper.UploadToRisk(TACTIVE obj, String destination, Stopwatch timerSLA) in C:\Users\...\UploadHelper.cs:line 36

enter image description here

1 个答案:

答案 0 :(得分:0)

我发现我的问题不是因为此代码。

正在执行我的代码时,有另一个线程正在运行。 我不知道为什么,但是当计算机执行我上面编写的代码时,该线程曾经停止运行(也许是巧合)。

我更改了管理线程的代码,并且我的代码开始像魅力一样工作。

感谢所有尝试提供帮助的人。