我有下面的代碼,當該方法沒有參數,但當我傳遞參數時不工作。我最初認爲當IIS中的上下文丟失時參數丟失了,所以我做了同樣事情的深層副本。我試圖記錄錯誤或消息,但同樣的事情 - 它從來沒有調用方法來完成任務。初始日誌消息寫入成功,但不是我想添加此方法的日誌消息發生在asp mvc項目中。我已經在這2天了,所有的stackoverflow和谷歌沒有解決方案。我添加了線程sleep讓後臺線程可能啓動,但它不起作用。 currentcontroller繼承自basecontroller類。記錄器使用log4net。日誌工作,我看到數據庫中的條目。 thread.sleep被添加來查看它是否通過使父線程等待後臺線程啓動來解決問題。有任何想法嗎?Task.Run參數不在ASP MVC中工作,但沒有參數傳遞
public class MainController : BaseController
{
[HttpPost]
public JsonResult ProcessSynchronization(int sourceId, string[] cities)
{
var ret = false;
try
{
if (sourceId == 1)
{
var cityDeep = (string[])cities.Clone();
Logger.Info("ABout to start BeginSynchronization ..");
Task.Factory.StartNew(() =>
{
Logger.Info("ABout to start BeginSynchronization enter..");
BeginSynchronization(cityDeep);
});
Thread.Sleep(5000);
ret = true;
}
}
catch (Exception ex)
{
Logger.Error(LogUtility.BuildExceptionMessage(ex), ex);
return Json(new { result = ret, responseText = "Customer could not be activated." });
}
return Json(new { result = ret, responseText = "Synchronization started." });
}
private void BeginSynchronization (string[] cities)
{
Logger.Info("BeginSynchronization entry processing..");
}
}
public class BaseController : Controller
{
/// <summary>
/// Get logger
/// </summary>
protected ILog Logger
{
get { return LogManager.GetLogger(GetType()); }
}
}
什麼'Thread.Sleep'的目的是什麼? Logger如何被聲明?你爲什麼要調用另一個線程內的實例方法(用'Task.Factory.StartNew'創建)?目前還不清楚你試圖達到什麼目的。另外,請添加整個控制器代碼並仔細檢查是否引發任何異常。 –
我已添加更多詳情。調用一個實例方法是什麼意思?這是同一個控制器類中的私有方法。 –