wpf中,创建线程,在该线程中如何获取UI线程中的属性 150
例如我定义一个较耗时的方法,该方法需在新建的Thread中调用,但该函数需要获取UI线程创建的多个属性值,例如获取主线程的多个textbox.Text属性,如果不用装箱传...
例如我定义一个较耗时的方法,该方法需在新建的Thread中调用,但该函数需要获取UI线程创建的多个属性值,例如获取主线程的多个textbox.Text属性,如果不用装箱传参的方式,如何在新建线程中直接获取这些属性?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread myThread = new Thread(() => {
string a = this.mytextbox1.Text + "ss";
string b = this.mytextbox2.Text + "ss";
....
do something about a b c d ...
});
}
} 展开
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Thread myThread = new Thread(() => {
string a = this.mytextbox1.Text + "ss";
string b = this.mytextbox2.Text + "ss";
....
do something about a b c d ...
});
}
} 展开
1个回答
2015-10-22 · 知道合伙人软件行家
关注
展开全部
private void createThread(String content)
{
Thread nThread = new Thread(() =>
{
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(() => this.lbl_VoiceContent.Content = content));
});
nThread.Start();
}
这段代码就是WPF中,Thread处理主线程UI界面的代码
{
Thread nThread = new Thread(() =>
{
this.Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(() => this.lbl_VoiceContent.Content = content));
});
nThread.Start();
}
这段代码就是WPF中,Thread处理主线程UI界面的代码
追问
(我知道可以通过Dispatcher调用Invoke、beginInvoke方法修改UI对象属性,下面代码会抛出异常“调用线程无法访问此对象,因为另一个线程拥有该对象,,我觉得把所有参数装箱后传给ParameterizedThreadStart委托不是最好的解决方式,因为那样可能会定义很多装箱类,感觉走弯路了。有没有更专业的解决思路?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询