使用Task在每个ListBox项上打开一个新线程
本文关键字:线程 一个 新线程 Task ListBox 使用 | 更新日期: 2023-09-27 18:16:37
这是我的播放按钮点击事件,我想从我的Listbox
中获取每个文件并执行操作:
private void btnPlay_Click(object sender, EventArgs e)
{
MyClass calss = new MyClass();
Task.Factory.StartNew(() =>
{
var files = listBoxFiles.Items.Count;
Parallel.ForEach(files ,
new ParallelOptions
{
MaxDegreeOfParallelism = 10 // limit number of parallel threads here
},
file =>
{
class.sendBuffer(file, selectedAdapter.PacketDevice, getSpeed(), capinfos.packets);
});
}).ContinueWith(
t => { /* when all files processed. Update your UI here */ }
, TaskScheduler.FromCurrentSynchronizationContext() // to ContinueWith (update UI) from UI thread
);
}
和我得到的错误,我不知道如何解决在Parallel.ForEach
:方法"System.Threading.Tasks.Parallel.ForEach(System.Collections.Generic)"的类型参数。IEnumerable, System.Threading.Tasks。ParallelOptions, System.Action)'不能从用法中推断出来。尝试显式指定类型参数
代替
var files = listBoxFiles.Items.Count;
使用var files = listBoxFiles.Items.Cast<String>().ToList();;
因为你需要遍历ListBox中的各个项目。
我假设你的列表框是字符串的集合