如何在 c# WPF 应用程序中取消上传
How TO Cancel Upload in c# WPF app
我真的被困在这个问题上,我需要知道如何取消在 wpf 中上传图像。下面是我用来上传的代码。 request.Abort() 不起作用,显示异常,但图像仍在上传。
private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData)
{
request = WebRequest.Create(postUrl) as HttpWebRequest;
if (request == null)
{
throw new NullReferenceException("request is not a http request");
}
request.Method = "POST";
request.ContentType = contentType;
request.UserAgent = userAgent;
request.CookieContainer = new CookieContainer();
request.ContentLength = formData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(formData, 0, formData.Length);
requestStream.Close();
}
GlobalManagement.isCancelingUpload = false;
var response = request.GetResponse() as HttpWebResponse;
request = null;
return response;
}
要中止请求,您可以尝试在单独的线程中发出请求,然后在您想取消它时中止该线程。这可能会向服务器发出请求已中止的信号,随后请求将被中止。
或者您可以通过人为地指定超时 属性 使其超时来终止它。这很可能会中止它。
Timeout Property
另一种选择是终止进程,我认为在新的 AppDomain 中启动它并在你想终止请求时删除 AppDomain;而不是中止主进程中的线程。
你也可以使用BeginGetResponse
方法,然后在请求的class中使用abort方法。我怀疑 Abort
是否可以与同步 GetResponse
.
一起使用
我真的被困在这个问题上,我需要知道如何取消在 wpf 中上传图像。下面是我用来上传的代码。 request.Abort() 不起作用,显示异常,但图像仍在上传。
private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData)
{
request = WebRequest.Create(postUrl) as HttpWebRequest;
if (request == null)
{
throw new NullReferenceException("request is not a http request");
}
request.Method = "POST";
request.ContentType = contentType;
request.UserAgent = userAgent;
request.CookieContainer = new CookieContainer();
request.ContentLength = formData.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(formData, 0, formData.Length);
requestStream.Close();
}
GlobalManagement.isCancelingUpload = false;
var response = request.GetResponse() as HttpWebResponse;
request = null;
return response;
}
要中止请求,您可以尝试在单独的线程中发出请求,然后在您想取消它时中止该线程。这可能会向服务器发出请求已中止的信号,随后请求将被中止。
或者您可以通过人为地指定超时 属性 使其超时来终止它。这很可能会中止它。 Timeout Property
另一种选择是终止进程,我认为在新的 AppDomain 中启动它并在你想终止请求时删除 AppDomain;而不是中止主进程中的线程。
你也可以使用BeginGetResponse
方法,然后在请求的class中使用abort方法。我怀疑 Abort
是否可以与同步 GetResponse
.