ThreadPool.QueueUserWorkItem with a lambda expression and anonymous method

后端 未结 5 540
慢半拍i
慢半拍i 2020-12-29 03:46

Passing two parameters to a new thread on the threadpool can sometimes be complicated, but it appears that with lambda expressions and anonymous methods, I can do this:

5条回答
  •  爱一瞬间的悲伤
    2020-12-29 04:44

    One potential problem with the pattern is that it's very tempting to expand it into something more-generic but less-safe like this (scratch code- don't expect it to work):

    public static void QueueTwoParameterWorkItem(T1 value1, T2 value2, workDelegate work)
    {
        try
        {
            T1 param1 = value1;
            T2 param2 = value2;
            ThreadPool.QueueUserWorkItem(
                (o) =>
                {
                    work(param1, param2);
                });
        }
        catch (Exception ex)
        {
            //exception logic
        }
    }
    

提交回复
热议问题