C#使用线程如何传参

在日常开发中,我们的应用程序一般都是单线程的,这就导致了有些操作执行慢,比如导出文件,如果数据量比较大,又或者数据源是通过SAP拿到的,导出的时间肯定慢,这时候我们就能使用线程去解决这个问题;而线程分为两种,分别是带参数和不带参数,以下直接传参的方法:

string urlPath = HttpContext.Current.Request.ApplicationPath + "/阿巴巴巴巴巴/";
string physicPath = HttpContext.Current.Server.MapPath(urlPath);
string filter1 = filter +  "@" + physicPath;
Thread childThread = new Thread(new ParameterizedThreadStart(ExportToExcel));
childThread.Start(filter1);

 获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径:HttpContext.Current.Request.ApplicationPath 

返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径

HttpContext.Current.Server.MapPath

根据虚拟路径返回一个物理路径

我不会一次传两个参数,只能把两个参数合成一个字符串当作一个参数传过去后在拆分了,至于为什么不在方法 ExportToExcel(object filter) 里获取虚拟路径和物理路径,那当然是因为使用了线程后的方法就不再是当前的 Http 请求了,这时候 HttpContext.Current is null 了,HttpContext.Current丢失,可以做个 try{}catch(Exception ex){} ,然后通过配置取得。而且参数只能是 object 类型。至于导出后,因为不会向再向当前请求输出是否保存文件,可以再添加一个界面,展示导出的内容,再加一个下载按钮,这时候相当于从服务器下载一个文件到本地,这样不就快多了吗,Nice!

https://www.runoob.com/csharp/csharp-multithreading.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值