2017-07-17 80 views
0

我正在编写一个用于刷新tradeGecko访问令牌的计划任务。下面是任务的代码:在nopCommerce中调用异步方法3.9计划任务

using Newtonsoft.Json.Linq; 
using Nop.Core; 
using Nop.Core.Domain.Orders; 
using Nop.Services.Configuration; 
using Nop.Services.Tasks; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net.Http; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 
using static Nop.Core.TradeGeckoHelperMethods; 

namespace Nop.Services.Catalog 
{ 
    public partial class TradeGeckoRefreshToken : ITask 
    { 
     private readonly IStoreContext _storeContext; 
     private readonly ISettingService _settingService; 

     public TradeGeckoRefreshToken(IStoreContext storeContext, ISettingService settingService) 
     { 
      _storeContext = storeContext; 
      _settingService = settingService; 
     } 

     public async System.Threading.Tasks.Task UpdateRefreshToken() 
     { 
      var orderSettings = _settingService.LoadSetting<OrderSettings>(); 
      Task<JObject> returnObject = TradeGeckoHelperMethods.RefreshAccessToken(orderSettings.TradeGeckoApplicationId, orderSettings.TradeGeckoSecretId, orderSettings.TradeGeckoCallBackUrl, orderSettings.TradeGeckoRefreshToken); 
      JObject refresheObject = await returnObject; 

      if (refresheObject[JsonKeys.AccessToken] != null) 
      { 
       Console.WriteLine(refresheObject[JsonKeys.AccessToken].ToString()); 
       orderSettings.TradeGeckoAccessToken = refresheObject[JsonKeys.AccessToken].ToString(); 
       orderSettings.TradeGeckoRefreshToken = refresheObject[JsonKeys.RefreshToken].ToString(); 
       _settingService.SaveSetting(orderSettings); 
       _settingService.ClearCache(); 
      } 
     } 

     public void Execute() 
     { 
      System.Threading.Tasks.Task t = UpdateRefreshToken(); 
      Thread.Sleep(2000); 
     } 
    } 
} 

虽然从有时候管理员面板它产生以下错误手动运行任务:

消息=已经有一个用此命令必须关闭相关联的打开的DataReader第一。

我在做对吧?或者有更好的方法来做到这一点。

+0

你真的有'Thread.Sleep'吗? – Fabiano

+0

是的,没有这个''UpdateRefreshToken''永远不会被击中。可能是我做的一切都错了。我不擅长异步事物。 – lukai

回答