C# 更新文本后如何刷新文本块文本?

C# 更新文本后如何刷新文本块文本?,c#,windows,textblock,C#,Windows,Textblock,我正在用C#开发windows 8应用程序。我的GUI中有2个文本块。 我从用户那里获取文本输入,并使用textBlock1.text=用户输入将其分配给textBlock1。 之后,我调用一个方法,该方法从JSON中的API获取一些数据,并使用textBlock2.Text=“specific data”在textBlock2中填充部分数据 但两个文本块的文本同时被更改,这是我不想要的。根据代码序列,textBlock1的文本应该提前更改,因为textblock2文本更改发生在调用API后,大

我正在用C#开发windows 8应用程序。我的GUI中有2个文本块。 我从用户那里获取文本输入,并使用
textBlock1.text=用户输入将其分配给textBlock1。
之后,我调用一个方法,该方法从JSON中的API获取一些数据,并使用
textBlock2.Text=“specific data”在textBlock2中填充部分数据
但两个文本块的文本同时被更改,这是我不想要的。根据代码序列,textBlock1的文本应该提前更改,因为textblock2文本更改发生在调用API后,大约需要10秒。
如何首先更改textBlock1的文本?

由于我是windows开发新手,请帮助我。

在您的方法中,您使用

HttpResponseMessage response = client.GetAsync(userInput).Result;
string result = response.Content.ReadAsStringAsync().Result;
如果调用异步方法,如果代码应等待方法调用,则应使用wait语句,如下所示:

HttpResponseMessage response = await client.GetAsync(userInput).ConfigureAwait(false);
string result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
但为此,必须将方法更改为异步:

private async void button_Click(object sender, RoutedEventArgs e)
也许,它解决了你的问题

Offtopic:因为您是新手,我建议您访问页面并阅读它们,以便更好地理解堆栈溢出

更新:
我忘了“.ConfigureAwait(false)”

API调用锁定UI。如果要在textblock 2之前更新textblock 1,则必须在不同的线程上进行调用。 这样的办法应该行得通

//make the method async.
private async void button_click(object sender, RoutedEventArgs e)
{

//...

//assuming userMessage is textblock2.
userMessage.Text = await MakeAPICallAsync();


//...

}

//where MakeAPICallAsync() is another function defined as
private async Task<string> MakeAPICallAsync()
{
//API call;
return result;
}
//使方法异步。
专用异步无效按钮\u单击(对象发送方,路由目标)
{
//...
//假设userMessage是textblock2。
userMessage.Text=wait makeapicallalsync();
//...
}
//其中MakeAPICallAsync()是另一个定义为
专用异步任务MakeApicalAsync()
{
//API调用;
返回结果;
}

如果您发布一个代码片段,它会有所帮助。@SeanStayn stayn我已经添加了代码片段,请看一看。希望它能澄清我正在尝试的“populateResponses”方法的代码。