IComman / DelegateCommand在哪个线程上运行

时间:2012-10-06 14:04:37

标签: wpf multithreading

我正在研究WPF。 我的应用程序使用ICommands将方法绑定到按钮。 我按如下方式初始化了这些命令:

AnswerCommand = new DelegateCommand(AnsCommandExecute, AnsCommandCanExecute);

我想知道AnsCommandExecute()方法是否适用于UI线程或后台线程。 如果它适用于UI线程,我必须为此execute()方法创建另一个线程,因为我的应用程序在后台执行大量处理。

此外,我的应用程序使用TCP与另一个应用程序进行通信。因此,为了获得更好的性能,我必须使用不同的线程来接收数据,处理和发送数据。 这类应用的最佳线程方法是什么?

1 个答案:

答案 0 :(得分:3)

查找AnsCommandExecute()方法是否在主线程上工作的最简单方法是在方法中放置断点并检查调用堆栈。

快速回答是肯定的 - AnsCommandExecute()将在主线程上执行。

要回答您的线程要求,您可以在单独的线程上调用AnsCommandExecute()内的内容。这将使UI响应。

如果要以异步方式接收响应,则必须借助“Dispatcher”将操作移回主线程。更多内容还有Dispatcher documentation