C# 线程

nangongxiaobai 2019-11-15 11:30:03
有一个字符串列表,以列表里的每个元素为名字生成对应的新线程。是可行的吗?
或者问题换成如何自动生成新的线程去调用我已有的方法。望大神们指教。
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bridge_go 2019-11-15
  • 打赏
  • 举报
回复

Dictionary<string, Action<object>> dictAction = new Dictionary<string, Action<object>>();
dictAction["m1"] = method1;
dictAction["m2"] = method2;
foreach (var a in dictAction)
{
    Task.Factory.StartNew(a.Value, a.Key);
}

void method1(object state)
{
}

void method2(object state)
{
}

正怒月神 2019-11-15
  • 打赏
  • 举报
回复
public static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3 };
            foreach (var item in arr)
            {
                Task.Factory.StartNew(x => { Console.WriteLine(x); }, item);
            }

            Console.ReadLine();
        }
正怒月神 2019-11-15
  • 打赏
  • 举报
回复
引用 3 楼 nangongxiaobai 的回复:
[quote=引用 1 楼 正怒月神 的回复:]
public static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3 };
            foreach (var item in arr)
            {
                Task.Factory.StartNew(x => { Console.WriteLine(x); }, item);
            }

            Console.ReadLine();
        }
谢谢,我其实是想做一个类似于闹钟的小工具用来练手。按照您的例子。 Task.Factory.StartNew(parm => { CheckTimeDiff(parm);},tiemspanstring); 想在这里调用方法CheckTimeDiff( ),以达到我多个时间检查的目的。 private void CheckTimeDiff(object timespan) { Console.WriteLine("Enter this function"); Console.WriteLine("parameter timespan is: {0}",timespan); int timeDifference = (int)timespan; //比较运算......; } 但实际中我发现,在这个方法中只有console.writeline或者messagebox.show或thread.sleep才会被执行,其它的任何赋值等操作都不会被执行,如上面的int timeDifference = (int)timespan;就不会被执行。请教一下这是什么原因?谢谢[/quote] 因为我用的是 application程序。 如果是winform,需要async/await来等待回调
nangongxiaobai 2019-11-15
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
public static void Main(string[] args)
        {
            int[] arr = { 1, 2, 3 };
            foreach (var item in arr)
            {
                Task.Factory.StartNew(x => { Console.WriteLine(x); }, item);
            }

            Console.ReadLine();
        }
谢谢,我其实是想做一个类似于闹钟的小工具用来练手。按照您的例子。 Task.Factory.StartNew(parm => { CheckTimeDiff(parm);},tiemspanstring); 想在这里调用方法CheckTimeDiff( ),以达到我多个时间检查的目的。 private void CheckTimeDiff(object timespan) { Console.WriteLine("Enter this function"); Console.WriteLine("parameter timespan is: {0}",timespan); int timeDifference = (int)timespan; //比较运算......; } 但实际中我发现,在这个方法中只有console.writeline或者messagebox.show或thread.sleep才会被执行,其它的任何赋值等操作都不会被执行,如上面的int timeDifference = (int)timespan;就不会被执行。请教一下这是什么原因?谢谢

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧