如何使用ISynchronizeInvoke接口?

Jas*_*wal 12 c#

什么是工作程序ISynchronizeInvoke

如何在C#中使用它?

Mar*_*ell 15

这基本上描述了一种在线程之间推送工作的方法; 将一项工作推送到另一个线程,使用Invoke(同步)或BeginInvoke(异步 - 理想情况下EndInvoke稍后调用).同样,InvokeRequired习惯于问"我需要这样做吗?还是我可以自己执行这项工作?".

这个接口最常见的用途是在windows-forms中,它是如何将工作推送到UI线程的一部分; 您当然可以使用Control.Invoke/ Control.BeginInvoke同等,但表单控件实现此接口以允许抽象 - 因此下游代码不需要将自己绑定到窗体表单.在表单的情况下,InvokeRequired意味着"我是UI线程吗?".

实际上,我不确定直接使用它是否常见.在UI上处理事件更常见,并且UI使用最合适的本地机制处理线程切换.

典型用法:

obj.Invoke((MethodInvoker) SomeMethod);
Run Code Online (Sandbox Code Playgroud)

它在(SomeMethodobj实现接口)管理的线程上执行(通过委托).