2012-09-04 89 views
1

我想從C#本地發出一個信號。目標是向localhost/serv?stream = SOME_STREAM發出請求。我不在乎從服務器獲取響應,我只需要服務器接收請求。現在我用下面的代碼,但我真的不關心使用這些對象 - 任何解決辦法是罰款:C#中的WebRequest/WebResponse阻止#

private void updateStreams(string streamname) 
    { 
     WebRequest myWebRequest = WebRequest.Create(new Uri("http://localhost/serv?stream=" + streamname)); 
     WebResponse myWebResponse = myWebRequest.GetResponse(); 
     myWebResponse.Close(); 
    } 

我已經嘗試了一些調試,並阻塞調用似乎myWebRequest。 GetResponse(),但是這條線很關鍵,因爲沒有它的請求不會被創建。我也嘗試下面的代碼,這在同一點塊:

 var myWebRequest = (System.Net.HttpWebRequest)WebRequest.Create(new Uri("http://localhost/serv?stream=" + sesh.session_name)); 
     using (var myWebResponse = (System.Net.HttpWebResponse)myWebRequest.GetResponse()) 
     { 
      var responseStream = myWebResponse.GetResponseStream(); 
      responseStream.ReadTimeout = 2; 
      responseStream.Close(); 
      responseStream.Dispose(); 
      myWebResponse.Close(); 
     } 

回答

1

您可以使用WebClient.DownloadStringAsync()像這樣:

WebClient wc = new WebClient(); 
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
wc.DownloadStringAsync(new Uri("http://localhost/serv?stream=" + streamname)); 

這將激發關閉請求,並調用wc_DownloadStringCompleted方法時,請求完成時不阻塞主線程。

+0

是的,是的,它會。它的工作原理。將在5分鐘內接受你的答案。謝謝! –