关于C#BeginInvoke

来源:百度知道 编辑:UC知道 时间:2024/05/22 08:10:09
在子线程中调用this.BeginInvoke(chenge),this就是当前的Form,这个异步调用应该不会阻塞主线程吧?但我的在执行这句后UI线程的其他控件就无法响应了。是BeginInvoke后还需要一些其他的处理吗?请指教.

根据你现有的描述,假设你理解异步编程的基本方法但仍然出现问题的话,你可以尝试使用Application.DoEvents方法处理当前在消息队列中的所有 Windows 消息。但这不一定是有效的,
如果仅仅是UI控件索死,可尝试使用Reflash方法刷新窗体.但这仍然不一定是有效的,

是的,BeginInvoke需要加委托才能行,否则会出错,给你段代码参考以下:

public delegate void DCmdHandler(object s);
if (servForm.IsHandleCreated)
{
servForm.BeginInvoke(new DCmdHandler(ExecuteCmd), cmd);
}

private void ExecuteCmd(object s)
{
//委托里需要干的事情
}