我有三个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();
}
上面的Bitrate()只处理ListBox3中的每个项目,我想让用户选择他们想用Bitrate()处理哪个列表框。 在我的情况下,我喜欢Bitrate(),Bitrate1(),...所以我想把工作放在队列中,例如:
Queue:
Bitrate() - listBox2
Bitrate() - listBox1
Bitrate1() - listBox3
现在,按钮5将开始按顺序逐个运行队列中的每个作业。我至少在一个飞蛾身上陷入了这个问题...请帮助我......我是新手,并试图自己去学习,这真是太痛苦了...... 现在我甚至想知道我的Bitrate()使用Parallel.ForEach,不知道它是否可以处理listBox中的所有项目..
答案 0 :(得分:2)
在队列中运行每个作业使用异步,等待: -
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";
...............
});}
我认为它对你有用.........