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

我创建了一个任务如下:

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 窗体。我怎样才能做到这一点?


守着一只汪
浏览 63回答 1
1回答

MMTTMM

Task.Factory.Start将启动一个新的Thread并且因为它 HttpContext.Context是本地的thread它不会自动复制到新线程,所以你需要手动传递它:var task = Task.Factory.StartNew(    state =>        {            var context = (HttpContext) state;            //use context        },    HttpContext.Current);
打开App,查看更多内容
随时随地看视频慕课网APP