我正在開發一個應用程序,其中用戶在文本框中輸入一個句子。我用的是TextBox.Text方法來獲得在TextBox作爲一個字符串文本,我調用一個方法getTranslation(),它在內部調用幾個異步回調,因爲它需要如何使方法暫停執行,直到先前使用異步回調調用的方法完成
- 建立連接到服務器
- 寫請求POST流從服務器
- 獲取響應回調
- 過程中的響應
- 返回響應到XAML頁面
在應用程序的xaml頁面中,我首先調用傳遞輸入文本作爲參數的第一個方法。然後下一行代碼調用返回響應方法並將TextBlock內容設置爲返回的響應。
這些是我用來調用服務器的方法。
public void searchOnline(string inputtxt)
{
//Lines of code
IAsyncResult writeRequestStreamCallback =
(IAsyncResult)req.BeginGetRequestStream(new AsyncCallback(RequestStreamReady), req);
}
private void RequestStreamReady(IAsyncResult ar)
{
//Lines of code
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
private void GetResponseCallback(IAsyncResult ar)
{
//Lines of code
IAsyncResult writeRequestStreamCallback = (IAsyncResult)serviceWebRequest.BeginGetResponse(new AsyncCallback(ServiceReady), serviceWebRequest);
}
private void ServiceReady(IAsyncResult ar)
{
//Lines of code
System.IO.StreamReader streamRead = new System.IO.StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
searchresult = responseString;
}
public string returner()
{
return searchresult;
}
在XAML頁面我叫下面的代碼
help.searchOnline(inputtextbox.Text);//line 1
outputtextbox.Text = help.returner();//line 2
outputtextbox.UpdateLayout();
我的問題是如何使收益法在XAML頁面等待即行2,更新文本塊,直到響應收到,即直到第1行更新搜索結果字符串?