C# Umbraco在新线程中保存内容
我正在编写一个桌面客户端,它允许用户上传带有产品的电子表格。然后由API解析电子表格,并使用ContentService创建或更新和保存产品 由于这个过程非常慢,我的第一个解决方案是将客户端webrequest的超时设置为5分钟,但我不喜欢这个解决方案。相反,我想在另一个线程中进行创建/更新。此解决方案不起作用,因为它在使用ContentService.Save(IList)时引发ArgumentNullException 我当前代码的剪贴画:C# Umbraco在新线程中保存内容,c#,multithreading,umbraco,umbraco7,C#,Multithreading,Umbraco,Umbraco7,我正在编写一个桌面客户端,它允许用户上传带有产品的电子表格。然后由API解析电子表格,并使用ContentService创建或更新和保存产品 由于这个过程非常慢,我的第一个解决方案是将客户端webrequest的超时设置为5分钟,但我不喜欢这个解决方案。相反,我想在另一个线程中进行创建/更新。此解决方案不起作用,因为它在使用ContentService.Save(IList)时引发ArgumentNullException 我当前代码的剪贴画: var items = parser.Parse(
var items = parser.Parse(); // Parse spreadsheet
new Task(() =>
{
var products = new List<IContent>();
for (var item in items)
{
if (item.IsValid())
{
var product = CreateOrUpdateProduct(parentId, item);
products.Add(product);
}
}
ApplicationContext.Current.Services.ContentService.Save(products);
).Start();
var items=parser.Parse();//分析电子表格
新任务(()=>
{
var products=新列表();
for(项目中的var项目)
{
if(item.IsValid())
{
var product=CreateOrUpdateProduct(父项ID,项);
产品。添加(产品);
}
}
ApplicationContext.Current.Services.ContentService.Save(产品);
).Start();
有可能做到这一点吗?好的,您可以使用…它允许您在等待任务的同时在后台线程上执行任务。当任务完成时,句柄将返回到方法并执行其剩余部分。@fabjan,该解决方案是否仍然使客户端等待任务完成?不是真的,它是由服务器端的状态机等待的,但客户端的UI线程被释放了,所以UI并没有冻结。从客户端的角度来看,他点击了一些按钮,从应用程序得到了一些即时响应。