如何在 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.

一起使用