zoukankan      html  css  js  c++  java
  • Delegte的BeginInvoke

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

     BeginInvoke 所调用的委托根本就是在 UI 线程中执行的

     BeginInvoke实现了事件的异步执行,如实例:

     private static int newTask(int mms)
            {
                Console.WriteLine("任务开始");
                Thread.Sleep(mms);
                Random random = new Random();
                int n = random.Next(10000);
                Console.WriteLine("任务完成");
                return n;
            }
    
            private delegate int NewTaskDelegate(int mms);
    
     static void Main(string[] args)
            {
                NewTaskDelegate newTst = newTask;
                IAsyncResult asyncResult = newTst.BeginInvoke(2000, null, null);
                while (!asyncResult.IsCompleted)
                {
                    Console.Write("*");
                    Thread.Sleep(100);
                }
                int result = newTst.EndInvoke(asyncResult);
                Console.WriteLine(result);
            }


    执行效果:

    *******************表示后台正在执行事件

    public delegate void DCmdHandler(object s);
    
    if (servForm.IsHandleted)
    {
        servForm.BeginInvoke(new DCmdHandler(ExecuteCmd), cmd);
    }
    
    private void ExecuteCmd(object s)
    {
        //委托里需要干的事情
    }
  • 相关阅读:
    Node.js Net 模块+DNS 模块
    php程序报500错误
    Node.js 工具模块-OS模块+path模块
    Node.js GET/POST请求
    Canvas动画+canvas离屏技术
    Python OS 模块
    Python random 模块
    Python time 模块
    Python 迭代器
    Python 生成器
  • 原文地址:https://www.cnblogs.com/liuxinls/p/2909670.html
Copyright © 2011-2022 走看看