首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#运行多个任务

C#运行多个任务
EN

Stack Overflow用户
提问于 2018-12-08 01:17:59
回答 1查看 925关注 0票数 0

我在网站上寻找这个问题,但我找不到解决问题的办法。

下面的代码工作正常,但在函数中不起作用。

当程序运行时,必须用给定的参数调用对进程函数,并将作为参数的字符串和(i + 6)值写入屏幕。

但是尽管代码很有用,但它不像我写的那样。

我在任务中试过了。工厂。StartNew和它没有成功的方法。

代码语言:javascript
运行
复制
 static void Main(string[] args) 
    {
        string[] Pairs = new string[] { "EURUSD", "GBPUSD", "EURGBP" };
        int totalPairs = Pairs.Count();
        Task[] Proc = new Task[totalPairs];
        Console.WriteLine($"Pairs Count : {Pairs.Count()}");
        for (int i = 0; i < totalPairs; i++)
        {
            Proc[i] = Task.Run(() => pairsProcess(Pairs[i],6+i));
        }

    }

    public static void pairsProcess(string a,int Counter)
    {
        for (int i = 0; i < Counter; i++)
        {
            Console.WriteLine($"Pairs : {a} Counter : {i+1} / {Counter}");
        }
    }

,这是我通常想要的。

我将6添加到i值.

欧元美元0+6=6倍

  • 对:欧元兑美元柜台: 1/6
  • 对:欧元兑美元柜台: 2/6
  • 对:欧元兑美元柜台: 3/6
  • 对:欧元兑美元柜台: 4/6
  • 对:欧元兑美元柜台: 5/6
  • 对:欧元兑美元柜台: 6/6

1+6=7倍

  • 成对: GBPUSD计数器: 1/7
  • 成对: GBPUSD计数器: 2/7
  • 成对: GBPUSD计数器: 3/7
  • 成对: GBPUSD计数器: 4/7
  • 成对: GBPUSD计数器: 5/7
  • 成对: GBPUSD计数器: 6/7
  • 成对: GBPUSD计数器: 7/7

EURGBP 2+6=8倍

  • 对: EURGBP计数器: 1/8
  • 对: EURGBP计数器: 2/8
  • 对: EURGBP计数器: 3/8
  • 对: EURGBP计数器: 4/8
  • 对: EURGBP计数器: 5/8
  • 对: EURGBP计数器: 6/8
  • 对: EURGBP计数器: 7/8
  • 配对: EURGBP计数器: 8/8

我找到了解决问题的方法。在运行任务之后,线程不得不等待一段时间。我的问题完全解决了。

代码语言:javascript
运行
复制
Proc [i] = Task. Run (() = > A. pairsprocess (Pairs [i], 6 + i));
            System. Threading. Thread. Sleep (100);
EN

回答 1

Stack Overflow用户

发布于 2018-12-08 01:57:05

我认为问题在于,您需要在循环中捕获I的值,而不是直接在任务中使用它。

试着做这样的事情:

代码语言:javascript
运行
复制
for (int i = 0; i < totalPairs; i++)
{
    var value = i;
    Proc[i] = Task.Run(() => pairsProcess(Pairs[value], 6 + value));
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53678660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档