C# 在异步线程上更新文本框文本
下面是我在代码背后的几行代码:C# 在异步线程上更新文本框文本,c#,wpf,asynchronous,C#,Wpf,Asynchronous,下面是我在代码背后的几行代码: private static Factual factual = new Factual(FACTUAL_KEY, FACTUAL_SECRET); private void OnStartQueries_Click(object sender, RoutedEventArgs e) { RunAsyncQuery(43.0120, -81.2003, 3000, 25).ContinueWith(task => rtbJsonData.Appen
private static Factual factual = new Factual(FACTUAL_KEY, FACTUAL_SECRET);
private void OnStartQueries_Click(object sender, RoutedEventArgs e)
{
RunAsyncQuery(43.0120, -81.2003, 3000, 25).ContinueWith(task => rtbJsonData.AppendText(task.Result));
}
private static async Task<string> RunAsyncQuery(double lat, double lng, int radius, int limit)
{
return await Task.Run(() => factual.Fetch("places", new Query().WithIn(new Circle(lat, lng, radius)).Limit(limit)));
}
private static Factual Factual=新事实(事实密钥、事实秘密);
开始查询时的专用void\u单击(对象发送方,路由目标)
{
RunAsyncQuery(43.0120,-81.2003,3000,25).ContinueWith(task=>rtbJsonData.AppendText(task.Result));
}
专用静态异步任务RunAsyncQuery(双lat、双lng、整数半径、整数限制)
{
return wait Task.Run(()=>factual.Fetch(“places”,new Query()。在(新的圆(纬度、液化天然气、半径)).Limit(极限))内);
}
因此,正如您看到的,当我单击Start Queries按钮时,我希望异步运行一个方法。当它返回该查询的结果时,我想将RichTextBox“rtbJsonData”的文本设置为结果。但是,当前我运行它时会出现异常:
“调用线程无法访问此对象,因为其他线程拥有它。”
我该怎么做 RichTextBox“rtbJsonData”由主线程拥有,无法从其他线程直接访问
在WPF中,可以从INotifyPropertyChanged接口派生模型。模型上的任何更改都将在视图上更新
有关完整示例,请参见MSDN:
这基于MVVM(模型-视图-模型)模式,RichTextBox“rtbJsonData”由主线程拥有,不能直接从其他线程访问
在WPF中,可以从INotifyPropertyChanged接口派生模型。模型上的任何更改都将在视图上更新
有关完整示例,请参见MSDN:
这基于MVVM(模型-视图-模型)模式