Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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#_Winforms_Listbox_Queue - Fatal编程技术网

具有不同输入的C#队列过程

具有不同输入的C#队列过程,c#,winforms,listbox,queue,C#,Winforms,Listbox,Queue,我有三个listBox1,listBox2,listBox3存储输入文件 private void Bitrate() { //turn listBox into List List<String> data = new List<String>(listBox3.Items.Cast<String>()); //do process for each item in the List

我有三个listBox1,listBox2,listBox3存储输入文件

  private void Bitrate()
    {
        //turn listBox into List
        List<String> data = new List<String>(listBox3.Items.Cast<String>());
        //do process for each item in the List
        Parallel.ForEach(data, (item) =>
        {
           System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = "cmd.exe";
            ...............
         });

   private void button5_Click(object sender, EventArgs e)
    {
       Bitrate();
    }
现在,单击按钮5将开始按顺序逐个运行队列中的每个作业。我陷入这个问题至少有一个月了。。。请帮帮我。。。我是新来的,我试着自己去学习,这是非常痛苦的。。。
现在我甚至想知道我的Bitrate()使用Parallel.ForEach,不知道它是否可以处理列表框中的所有项目。

要运行队列中的每个作业以使用异步,请等待,如:-

private async void button5_Click(object sender, EventArgs e)
{await Task.Run(() =>{
            Bitrate(listBox1);
            Bitrate(listBox2);
            Bitrate(listBox3);
        });
}

 private async void Bitrate(List<...> list)
{
    //turn listBox into List
    List<String> data = new List<String>(list.Items.Cast<String>());
    //do process for each item in the List
    Parallel.ForEach(data, (item) =>
    {
       System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo.FileName = "cmd.exe";
        ...............
     });}
private async void按钮5\u单击(对象发送方,事件参数e)
{等待任务。运行(()=>{
比特率(listBox1);
比特率(listBox2);
比特率(listBox3);
});
}
专用异步无效比特率(列表)
{
//将列表框转换为列表
列表数据=新列表(List.Items.Cast());
//对列表中的每个项目执行流程
Parallel.ForEach(数据,(项目)=>
{
System.Diagnostics.Process proc=新的System.Diagnostics.Process();
proc.StartInfo.FileName=“cmd.exe”;
...............
});}

我想它对你很有用………

非常感谢你!你的回答给了我很多想法。但我也想知道如何让用户将作业放入队列。例如,用户希望使用listBox1作为输入执行Bit(),然后使用listBox3作为输入执行Up()。。。
private async void button5_Click(object sender, EventArgs e)
{await Task.Run(() =>{
            Bitrate(listBox1);
            Bitrate(listBox2);
            Bitrate(listBox3);
        });
}

 private async void Bitrate(List<...> list)
{
    //turn listBox into List
    List<String> data = new List<String>(list.Items.Cast<String>());
    //do process for each item in the List
    Parallel.ForEach(data, (item) =>
    {
       System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo.FileName = "cmd.exe";
        ...............
     });}