• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

多线程取数据的一点求助

walkeeper 上海 服务器端工程师  2021-09-15 16:46:36

现在有个需求是读取10几个文件作为数据源,放到静态变量里凑合着当个内存数据库用用,然后用LINQ做联表查询

对于这个写法有点不太确定,希望大佬们指定一点

我希望它是10几个文件用多线程分别去读取,然后等他们全部读完了才开始加载界面,我就这样写了

Task.WaitAll(new Task[] {
                Task.Factory.StartNew(()=>{
                    list1 = GetFileDataList<T1>("t1.csv");
                }),
                Task.Factory.StartNew(()=>{
                    list2= GetFileDataList<T2>("t2.csv");
                }),
                Task.Factory.StartNew(()=>{
                    list3= GetFileDataList<T3>("t3.csv");
                })
        ....
});

运行了一下看似是达到效果了(本来依次执行要10来秒才能读完,现在就3秒多了估计是最大的那个文件的读取时间)

大佬们可否指点一下这样写有没有啥问题,或者语法上还能写的再优雅一点不?(用async await不知道怎么写才能等待它们一起完成,多线程还是学的有点弱……)

...全文
51 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 6天前
你只是创建了3个任务,也没有检查结果是否正确
回复
walkeeper 5天前
@xuzuning ……线程都已经运行并且取到结果了,我更想知道比较好的写法一般是什么样的
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2021-09-15 16:46
社区公告

让您成为最强悍的C#开发者