我在组合两个任务时遇到了问题:Dispatcher.Invoke
并创建一个对象实例。
我有一个文本框:
<TextBox x:Name="txtuid">
这是静态方法:
static private int onCallback(string Arr, int Len)
{
MainWindow my = new MainWindow();
my.txtuid.Text = Arr;
....
return 0;
}
问题是,onCallback
正在另一个主题中运行,我必须使用Dispatcher.Invoke
作为MainWindow my = new MainWindow()
,但我该怎么办呢?
答案 0 :(得分:1)
在这种情况下,如果您要实例化新的Control
而不是修改现有的Application.Current.Dispatcher
,最简单的解决方案就是使用static private int onCallback(string Arr, int Len)
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
MainWindow my = new MainWindow();
my.txtuid.Text = Arr;
....
}));
return 0;
}
:
ERROR in [at-loader] ./src/app/app.ts:6:13
TS2304: Cannot find name 'require'.
答案 1 :(得分:1)
您应该设置Text
现有实例的MainWindow
属性,而不是创建新属性:
static private int onCallback(string Arr, int Len)
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
MainWindow my = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
my.txtuid.Text = Arr;
}));
return 0;
}