VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 677|回复: 2

一个关于线程委托调用带参数的方法的问题!

[复制链接]

2

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-9 23:30:01 | 显示全部楼层 |阅读模式
看下面代码:问题是下面代码中创建的线程委托调用的是Work()这个方法,如果我想委托调用WorkOne(string msg)这个方法,这种情况应该怎么写?谢谢。
static void Main(string[] args)
{
        Thread currentThread = Thread.CurrentThread;
        Thread workThread = new Thread(new ThreadStart(Work));
        workThread.Start();
               
}

static void Work()
{
         Console.WriteLine("Hello Work");  
}

static void WorkOne(string msg)
{
         Console.WriteLine("Hello {0}",msg)
}
回复

使用道具 举报

0

主题

27

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-6-4 10:00:01 | 显示全部楼层
楼上正解,ThreadStart是不带参数的,所以你可以把string msg设为全局变量来调用。
回复

使用道具 举报

0

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-6-18 09:30:01 | 显示全部楼层
for(int i = 1; i <= 5; i++)
        {
            Thread t = new Thread(new ParameterizedThreadStart(Worker));

            // Start the thread, passing the number.
            //
            t.Start(i);
        }

private static void Worker(object num)
    {
        // Each worker thread begins by requesting the
        // semaphore.
        Console.WriteLine("Thread {0} begins " +
            "and waits for the semaphore.", num);
        _pool.WaitOne();

        // A padding interval to make the output more orderly.
        int padding = Interlocked.Add(ref _padding, 100);

        Console.WriteLine("Thread {0} enters the semaphore.", num);
        
        // The thread's "work" consists of sleeping for
        // about a second. Each thread "works" a little
        // longer, just to make the output more orderly.
        //
        Thread.Sleep(1000 + padding);

        Console.WriteLine("Thread {0} releases the semaphore.", num);
        Console.WriteLine("Thread {0} previous semaphore count: {1}",
            num, _pool.Release());
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表