Umbraco在新帖子

时间:2016-04-22 08:23:06

标签: c# multithreading umbraco umbraco7

我正在编写一个桌面客户端,允许用户上传包含产品的电子表格。然后,API会对电子表格进行解析,并使用ContentService创建或更新产品并保存。

由于此过程非常慢,我的第一个解决方案是将客户端webrequest的超时设置为5分钟,但我不喜欢该解决方案。相反,我想在另一个线程中进行创建/更新。此解决方案无法正常工作,因为它在使用ContentService.Save(IList)时会抛出ArgumentNullException。

我当前代码的一小部分:

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();

是否可以这样做?

0 个答案:

没有答案