C# 如何使用c类任务乘法矩阵和向量#

C# 如何使用c类任务乘法矩阵和向量#,c#,multithreading,C#,Multithreading,如何使用类任务将矩阵乘以向量? 我不明白我在代码中可以在哪里使用任务。有什么想法吗 public static int[] matxvecTask(int[,] mat, int[] vec) //функция умножения матрицы на вектор Task { Task[] tasks = new Task[4] { new Task(() => Console.WriteLine("1")), new Task(()

如何使用类任务将矩阵乘以向量? 我不明白我在代码中可以在哪里使用任务。有什么想法吗

 public static int[] matxvecTask(int[,] mat, int[] vec) //функция умножения матрицы на вектор Task
{
    Task[] tasks = new Task[4]
    {
        new Task(() => Console.WriteLine("1")),
        new Task(() => Console.WriteLine("2")),
        new Task(() => Console.WriteLine("3")),
        new Task(() => Console.WriteLine("4"))
    };
    foreach(var t in tasks)
    {
        t.Start();
    }
    Task.WaitAll(tasks);
     int[] res = new int[mat.GetLength(0)] ;

         for (int i = 0; i < mat.GetLength(0); i++)
         {
             for (int j = 0; j < mat.GetLength(1); j++)
             {
                 res[i] += mat[i, j] * vec[j];
             }
         }

     return res;
}
public static int[]matxvecTask(int[,]mat,int[]vec)//
{
任务[]任务=新任务[4]
{
新任务(()=>Console.WriteLine(“1”)),
新任务(()=>Console.WriteLine(“2”)),
新任务(()=>Console.WriteLine(“3”)),
新任务(()=>Console.WriteLine(“4”))
};
foreach(任务中的var t)
{
t、 Start();
}
Task.WaitAll(任务);
int[]res=新int[mat.GetLength(0)];
for(int i=0;i
老实说,你的问题很不清楚。无论如何,这段代码现在使用了一个任务。确保至少使用C#7.1,因为
Main()
方法的已用签名在以前的语言规范中不是有效的入口点

internal class Program
{
    private static async Task Main(string[] args)
    {
        int[,] mat = new int[3, 3];
        int[] vec = new int[3];

        int[] result = await Task.Run(() => matxvecAsync(mat, vec));

        Console.WriteLine($"Execution of '{nameof(matxvecAsync)}()' finished");

        Console.ReadLine();
    }

    private static int[] matxvecAsync(int[,] mat, int[] vec)
    {
        int[] res = new int[mat.GetLength(0)];

        for (int i = 0; i < mat.GetLength(0); i++)
        {
            for (int j = 0; j < mat.GetLength(1); j++)
            {
                res[i] += mat[i, j] * vec[j];
            }
        }

        return res;
    }

}
内部类程序
{
专用静态异步任务主(字符串[]args)
{
int[,]mat=新的int[3,3];
int[]vec=新的int[3];
int[]result=wait Task.Run(()=>matxvecsync(mat,vec));
WriteLine($“执行{nameof(matxvecAsync)}()'已完成”);
Console.ReadLine();
}
私有静态int[]matxvecsync(int[,]mat,int[]vec)
{
int[]res=新int[mat.GetLength(0)];
for(int i=0;i
如果你想要一个质量更好的答案,你需要提供更多关于你的问题的信息

  • 为什么要使用任务
  • 你认为你能用它解决你的实际问题吗
  • 您对这段代码有什么要求
  • 你是不是只是好奇这个问题

您为什么要使用任务?退房也许这就是你想要的。@ErikT。我是用并行循环完成的,现在我必须用任务来完成。