为了账号安全,请及时绑定邮箱和手机立即绑定

如何从任务在主线程上运行语句

如何从任务在主线程上运行语句

C#
守着一只汪 2022-12-24 14:17:03
我创建了一个任务如下:ExportTask = Task.Factory.StartNew(() => ExcelExport(rs, ReportCenter));在 ExcelExport() 方法中,我喜欢运行一个语句来保存 excel 电子表格,但它需要在主线程上:workbook.SaveAs(String.IsNullOrWhiteSpace(AppSettingsUtils.GetString("ExportExcelFileName")) ? "Export.xlsx" : AppSettingsUtils.GetString("ExportExcelFileName"), Response, ExcelDownloadType.PromptDialog, ExcelHttpContentType.Excel2013);就此而言,我很好奇如何在任务中也从这样的语句中获取值:ReportCenter = HttpContext.Current.Profile.GetPropertyValue("ReportCenter");似乎有很多关于 Windows 窗体的信息,但很难找到 Web 窗体。我怎样才能做到这一点?
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

Task.Factory.Start将启动一个新的Thread并且因为它 HttpContext.Context是本地的thread它不会自动复制到新线程,所以你需要手动传递它:


var task = Task.Factory.StartNew(

    state =>

        {

            var context = (HttpContext) state;

            //use context

        },

    HttpContext.Current);


查看完整回答
反对 回复 2022-12-24
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信