这里不做结论性的总结,只写一个自己所用的解决方案。
主界面事件 --> 去子线程处理 --> 子线程处理完毕请求刷新界面线程的事件堆入界面线程的event queue里面。
<pre class="html" name="code">
namespace IXO_SYSTEM_V1._0
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private delegate void NewThreadDelegate();
private delegate void UpdateDelegate();
public MainWindow()
{
InitializeComponent();
}
private void btn_LuaTest_Click(object sender, RoutedEventArgs e)
{
// ThreadPool
ThreadPool.QueueUserWorkItem(new WaitCallback(PrintTest));
// use delegate
//NewThreadDelegate dd = new NewThreadDelegate(PrintTest);
//dd.BeginInvoke(null, null);
}
private void PrintTest(object state)
{
Thread.Sleep(5000);