Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以创建两个线程并在c#中的任务中运行它们吗?_C#_Multithreading_Task - Fatal编程技术网

我可以创建两个线程并在c#中的任务中运行它们吗?

我可以创建两个线程并在c#中的任务中运行它们吗?,c#,multithreading,task,C#,Multithreading,Task,我必须在c#中创建几个任务来执行图遍历函数,现在我想做的是有两个独立的线程,它们将不同的源作为遍历函数的参数,并在任务本身中启动。我有一个使用task的想法,因为我希望4个task以并行方式工作,但让它们使用两个执行相同函数的线程?可能吗 所以我想要的是,task1包含thread1,thread2和task2包含thread3,thread4和task3包含thread5,thread6 所有这些线程都执行相同的函数。有可能实施吗?还有别的办法吗 声明一个可用于向线程传递参数的类: 创建类的多

我必须在c#中创建几个任务来执行图遍历函数,现在我想做的是有两个独立的线程,它们将不同的源作为遍历函数的参数,并在任务本身中启动。我有一个使用task的想法,因为我希望4个task以并行方式工作,但让它们使用两个执行相同函数的线程?可能吗

所以我想要的是,
task1
包含
thread1
thread2
task2
包含
thread3
thread4
task3
包含
thread5
thread6

所有这些线程都执行相同的函数。有可能实施吗?还有别的办法吗

  • 声明一个可用于向线程传递参数的类:
  • 创建类的多个实例并启动线程,将参数对象传递给线程:
  • ThreadParamsClass[]ThreadParams=新的ThreadParamsClass[6];
    ThreadParams[0]=新的ThreadParamsClass(1,2);
    ThreadParams[1]=新的ThreadParamsClass(3,4);
    ThreadParams[2]=新的ThreadParamsClass(5,6);
    ThreadParams[3]=新的ThreadParamsClass(7,8);
    ThreadParams[4]=新的ThreadParamsClass(9,10);
    ThreadParams[5]=新的ThreadParamsClass(11,12);
    对于(int i=0;i<6;i++)
    {
    Thread Thread1=新线程(新的参数化ThreadStart(Function1));
    Thread1.Start(ThreadParams[i]);
    }
    void函数1(对象参数)
    {
    ThreadParamsClass ThreadParams=(ThreadParamsClass)参数;
    int result=ThreadParams.int1+ThreadParams.int2;
    }
    

    为什么不可能呢?试一下,看看是否可能。我给Task1函数创建了两个线程。这两个线程执行图形遍历功能。现在线程没有执行该函数。所以现在我认为我所做的是错的@谢谢你的答复,但这不是我想做的。我希望任务每个创建两个线程,并执行相同的图遍历函数。帮助我!!
    class ThreadParamsClass
    {
        internal int int1, int2;
    
        internal ThreadParamsClass(int int1, int int2)
        {
            this.int1 = int1;
            this.int2 = int2;
        }
    }
    
    ThreadParamsClass[] ThreadParams = new ThreadParamsClass[6];
    ThreadParams[0] = new ThreadParamsClass(1, 2);
    ThreadParams[1] = new ThreadParamsClass(3, 4);
    ThreadParams[2] = new ThreadParamsClass(5, 6);
    ThreadParams[3] = new ThreadParamsClass(7, 8);
    ThreadParams[4] = new ThreadParamsClass(9, 10);
    ThreadParams[5] = new ThreadParamsClass(11, 12);
    for (int i = 0; i < 6; i++)
    {
        Thread Thread1 = new Thread(new ParameterizedThreadStart(Function1));
        Thread1.Start(ThreadParams[i]);
    }
    
    void Function1(object Params)
    {
        ThreadParamsClass ThreadParams = (ThreadParamsClass)Params;
        int result = ThreadParams.int1 + ThreadParams.int2;
    }