我正在编写一个桌面客户端,允许用户上传包含产品的电子表格。然后,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();
是否可以这样做?