1

AsyncCallback を何十回も書かずに、HttpWebRequest が完了するのを待つようにしています。そのために、Task で呼び出しを処理し、その中で WaitOne を使用しようとしました --> そのため、UI スレッドはブロックされません。

問題は、呼び出すたびに NotSupportedException が表示され、その理由がわかりません。誰かがそれについてもっと教えてもらえますか?おそらくこの問題を修正する方法はありますか?

ここにコード:

    Task.Factory.StartNew((x)=>
            {


            HttpWebRequest request = WebRequest.CreateHttp(baseUri + "/api/" + ControllerName);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Headers["Session"] = SessionKey;

            IAsyncResult GetRequestStreamResult = request.BeginGetRequestStream(null, null);
            GetRequestStreamResult.AsyncWaitHandle.WaitOne(); //<-- That causes the exception
            using (Stream RequestStream = request.EndGetRequestStream(GetRequestStreamResult))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(Parameter.GetType());
                serializer.WriteObject(RequestStream, Parameter);
            }

よろしくお願いします

クリストフ

4

2 に答える 2

0

このハンドラーを使用...

  while ((GetRequestStreamResult.AsyncWaitHandle.WaitOne(1000, true) == false)
          && (GetRequestStreamResult.IsCompleted == false))
           {
               // Do nothing 
           }
于 2014-02-13T14:10:46.833 に答える