C#委託方法匿名的4種寫法

來源:互聯網
上載者:User

using System;
using System.Threading;

//不需要建構函式的委派物件
internal sealed class NoConstructorDelegateClass
{
    public static void CallbackWithoutNewingADelegateObject()
    {
        ThreadPool.QueueUserWorkItem(SomeAsyncTask, 5);
    }

    private static void SomeAsyncTask(Object o)
    {
        Console.WriteLine(o);
    }
}

//不需要定義回調方法,產生一個一個靜態委託欄位,並在調用時執行個體化
internal sealed class NoCallbackMethodDelegateClass
{
    public static void CallbackWithoutNewingADelegateOjbect()
    {
        ThreadPool.QueueUserWorkItem(delegate(Object obj) { Console.WriteLine(sm_name + obj); },5);
    }
}

//不需要指定回調方法的參數
internal sealed class NoCallbackMethodAndParametersDelegateClass
{
    public static void CallbackWithoutNewingADelegateOjbect()
    {
        ThreadPool.QueueUserWorkItem(delegate{ Console.WriteLine("Test"); }, 5);
    }
}

//不需要將局部變數人工封裝到類中,即可將它們傳給一個回調方法 自動產生輔助類
internal sealed class NoEnLocalVarToClassDelegateClass
{
    public static void UsingLocalVariablesInTheCallbackCode(Int32 numToDo)
    {
        Int32[] squares = new Int32[numToDo];
        AutoResetEvent done = new AutoResetEvent(false);

        for (Int32 n = 0; n < squares.Length; n++)
        {
            ThreadPool.QueueUserWorkItem(delegate(Object obj)
            {
                Int32 num = (Int32)obj;
               
                squares[num] = num * num;

                if (Interlocked.Decrement(ref numToDo) == 0)
                    done.Set();
            }, n);
        }

        done.WaitOne();

        for (Int32 n = 0; n < squares.Length; n++)
        {
            Console.WriteLine("Index {0},Square = [1]",n,squares[n]);
        }
    }



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。