2010-01-12 31 views
1

我有一个C#用户控件,它有自己的后台工作线程。此工作线程在控件的构造函数中启动,并在处理控件时停止。C#UserControl BeginInvoke问题

线程定期使用委托调用BeginInvoke-Method,但有时会出现异常“调用或BeginInvoke无法在控件上调用,直到窗口句柄被创建。” occoures。

现在我问你,我如何检查是否可以从我的工作线程调用BeginInvoke,只要控件没有完全创建就不会调用?

此问题仅在编译发布时遇到。不在调试模式。

与问候

回答

3

工作者线程应该内部创建...(你有两种选择):

  1. Control.HandleCreated事件的处理
  2. 重写Control.OnHandleCreated

你需要知道的是,即使在构造函数完成执行后,控件也可能没有完全创建(可以使用)。

+0

会试试这个。谢谢。 编辑:似乎工作。 我现在在HandleCreated事件发生时启动线程,并在HandleDestroyed事件触发时停止它。 – Emiswelt 2010-01-12 17:08:01