C# 如何使一个方法暂停其执行,直到以前调用的带有异步回调的方法完成
我正在开发一个应用程序,其中用户在文本框中输入一个句子。我使用TextBox.Text方法将TextBox中的文本作为字符串获取,并调用getTranslation方法,该方法根据需要在内部调用多个异步回调 建立到服务器的连接 向后置流写入请求 从服务器获取响应回调 处理响应 将响应返回到xaml页面 在应用程序的xaml页面中,我首先调用将输入文本作为param传递的第一个方法。然后,下一行代码调用return-response方法,并将TextBlock内容设置为返回的响应 这些是我用来调用服务器的方法C# 如何使一个方法暂停其执行,直到以前调用的带有异步回调的方法完成,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在开发一个应用程序,其中用户在文本框中输入一个句子。我使用TextBox.Text方法将TextBox中的文本作为字符串获取,并调用getTranslation方法,该方法根据需要在内部调用多个异步回调 建立到服务器的连接 向后置流写入请求 从服务器获取响应回调 处理响应 将响应返回到xaml页面 在应用程序的xaml页面中,我首先调用将输入文本作为param传递的第一个方法。然后,下一行代码调用return-response方法,并将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行更新搜索结果字符串?仅同步重写方法。您只需要在OutputTextBox中显示继续运行程序。因此,应等待获取数据的过程 但如果在此过程中需要执行其他操作,则可以使用任务: 通过该类,您可以将对象TResult分配给操作的返回,因此请检查您的状态并按照您想要的方式进行操作,例如通过属性: 公共布尔已完成{get;} 这会告诉你在线搜索是否完成 除此属性外,还有一些方法,如Wait,它实际上是等待任务完成执行,即等待方法SearchOnline更新OutputTextBox 我想重申,研究Class System.Threading.Tasks.Task的特性是非常好的 我希望这有助于: