Invoke

Control.Invoke

The delegate can be an instance of EventHandler, in which case the sender parameter will contain this control, and the event parameter will contain EventArgs.Empty. The delegate can also be an instance of MethodInvoker, or any other delegate that takes a void parameter list. A call to an EventHandler or MethodInvoker delegate will be faster than a call to another type of delegate.

写法1

Control.BeginInvoke(new Action(DoSomething), null);

private void DoSomething()
{
    MessageBox.Show("What a great post");
}OR
Control.BeginInvoke(new Action(() => MessageBox.Show("What a great post")));

写法2

Control.BeginInvoke((MethodInvoker) delegate {
    MessageBox.Show("What a great post");
});

写法3

public static class FormsExt
{
    public static void InvokeOnMainThread(this System.Windows.Forms.Control control, Action act)
    {
        control.Invoke(new MethodInvoker(act), null);
    }
}then
rtbOutput.InvokeOnMainThread(() =>
{
    // Code to run on main thread here
    rtbOutput.AppendText(fields[0].TrimStart().TrimEnd().ToString() + " Profile not removed.  Check Logs.\n"); }));
});

写法4

样例:显示时间

public Form1()
    {
        // Create a timer that will call the ShowTime method every second.
        var timer = new System.Threading.Timer(ShowTime, null, 0, 1000);
    }

    private void ShowTime(object x)
    {
        // Don‘t do anything if the form‘s handle hasn‘t been created
        // or the form has been disposed.
        if (!this.IsHandleCreated && !this.IsDisposed) return;

        // Invoke an anonymous method on the thread of the form.
        this.Invoke((MethodInvoker) delegate
        {
            // Show the current time in the form‘s title bar.
            this.Text = DateTime.Now.ToLongTimeString();
        });
    }
				
时间: 2024-10-24 22:47:19

Invoke的相关文章

部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常

最近,在使用Jenkins对工程一键部署的时候,出现调用Tomcat Manager 异常,对其解决方案特记于次. 异常信息 可能存在的异常:(1)Cannot invoke Tomcat manager: Error writing to server :(2)Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]. 异常原因 经查询资料,安装Tomcat时,默认带着manager工程,其负责WAR包的部署等功

JAVA深入研究——Method的Invoke方法。

在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到Method,这时去调用父类的对象也会报错.虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java是如何实现的,就学习了下Method的源代码. Method的invoke方法 1.先检查 AccessibleObject的override属性是否为true. Accessibl

com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method

查看了网友们的错误原因, 需要进行实例化的类没有进行实例化,具体没有实例化的类会在错误信息中显示,在错误信息中搜索"Serializable"即可找到将其实现序列化可消除错误. 是在使用Dubbo提供服务是在主机上启动了虚拟机的网络,在Windows中具体可以,在运行中输入"CMD"在CMD窗口中输入"ifconfig"命令查看,如果有其他除本地的网络链接,通过命令或者将其手动禁止,再启动Dubbo服务可以解决问题. 防火墙对应端口没有开启 我这

Method类的 invoke()方法

1 public class MethodTest 2 3 { 4 public static void main(String[] args) 5 { 6 String [] names ={"tom","tim","allen","alice"}; 7 Class<?> clazz = Test.class; 8 try 9 { 10 Method method = clazz.getMethod("

c# 线程浅析(代理 、Invoke、Lock)

前言:本来想根据自己的经验总结一下c#线程相关的知识点, 写之前看了一些其他人的博客,发现自己也就掌握了不到三分之一....希望通过这次的博客将自己的知识点补充一下,写出更直白的博客和初学者分享. 这是我参考的博客地址:http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html  . 这个是他参考的英文原著地址:http://www.albahari.com/threading/ 原博客介绍的可以说深入浅出,鞭辟入里.不过我想写

java动态代理中的invoke方法是如何被自动调用的

转载:http://www.shangxueba.com/jingyan/1853835.html 一.动态代理与静态代理的区别.(1)Proxy类的代码被固定下来,不会因为业务的逐渐庞大而庞大:(2)可以实现AOP编程,这是静态代理无法实现的:(3)解耦,如果用在web业务下,可以实现数据层和业务层的分离.(4)动态代理的优势就是实现无侵入式的代码扩展. 静态代理这个模式本身有个大问题,如果类方法数量越来越多的时候,代理类的代码量是十分庞大的.所以引入动态代理来解决此类问题 二.动态代理 Ja

public static void Invoke (Action action)

using System; using System.Security.Principal; using System.Security.Permissions; namespace Demo { class MainClass { public static void Invoke (Action action) { try { action (); } catch (Exception ex) { Console.WriteLine (ex.Message); } } public stat

InvokeRequired和Invoke

C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太不安全,因此必须让别人先要告诉你,你再从自己的钱包把钱拿出来借给别人,这样就安全了 ----------------------

C# Invoke

在用.NET Framework框架的WinForm构建GUI程序界面时,如果要在控件的事件响应函数中改变控件的状态, 可能会触发异常,异常信息是:"不能从不是创建该控件的线程调用它". 造成这种异常的原因在于,控件是在主线程中创建的,进入控件的事件响应函数时, 是在控件所在的线程,并不是主线程.在控件的事件响应函数中改变控件的状态,可能与主线程发生线程冲突. 如果主线程正在重绘控件外观,此时在别的线程改变控件外观,就会造成画面混乱.不过这样的情况并不总会发生, 如果主线程此时在重绘别

【Unity3D】Invoke,InvokeRepeating ,Coroutine 延迟调用,周期性调用

Invoke和InvokeRepeating方法,可以实现延迟调用,和周期调用 第一个是执行一次,第二个是重复执行 void Invoke(string methodName, float time); 第一个参数是方法名(注意是字符串形式),并不是更方便的委托.第二个是延时多少秒.只执行一次. void InvokeRepeating(string methodName, float time, float repeatRate); InvokeRepeating第二个参数是延时多少秒后开始,