具有不同输入的C#队列过程
我有三个listBox1,listBox2,listBox3存储输入文件具有不同输入的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
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";
...............
});}