我有从一个网址张贴和读取数据的Windows Phone 8 ComClass。
public class ComClass
{
private string _url = """;
private string _postdata = "";
public Boolean data_received;
public string data;
public ComClass(string url, string data2send)
{
_url = url;
_postdata = data2send;
}
public void Send()
{
data_received = false;
HttpWebRequest request = null;
request = (HttpWebRequest)WebRequest.Create(_url);
request.ContentType = "application/json;charset=UTF-8";
request.Method = "POST";
request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
}
private void GetRequestStreamCallback(IAsyncResult asyncResult)
{
HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
Stream postStream = request.EndGetRequestStream(asyncResult);
byte[] byteArray = Encoding.UTF8.GetBytes(_postdata.ToString());
postStream.Write(byteArray, 0, _postdata.Length);
postStream.Dispose();
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
data = streamRead.ReadToEnd();
data_received = true;
streamResponse.Dispose();
streamRead.Dispose();
response.Dispose();
}
catch (WebException ex)
{
data = ex.Message;
data_received = false;
//using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
//{
// //Debug.WriteLine("Exception output : " + ex);
//}
}
}
}
类工作正常。 我的问题是,我想以某种方式得到通知,我有一个响应。 例如
ComClass ccc = null;
private void Button_Click(object sender, RoutedEventArgs e)
{
try
{
ccc = new ComClass("url", "somedata");
ccc.Send();
//while (ccc.data_received == false)
//{ }
string itemdata = ccc.data;
//do something with itemdata...
}
catch (Exception ee)
{
}
}
我知道,我必须使用坐等或代表,但我坚持......