-1
parallel.invokeで呼び出された場合にオブジェクト参照されない問題があります。問題は、メソッドを1つずつ呼び出すと動作することです。並列呼び出しメソッドで参照されていないオブジェクトエラー
try
{
Task t1 = Task.Run(async() =>
{
log.Info("call GetRecentHomeChanges");
GetRecentHomeChanges resultHomeChanges = await apManager.GetRecentHomeChanges(ApplicationContext.Instance.LoggedUser.UserName, ApplicationContext.Instance.LoggedUser.HashedPwd);
ApplicationContext.Instance.pastmeetingList = resultHomeChanges.PastMeetings;
ApplicationContext.Instance.documentsHomePageList = resultHomeChanges.Attachments;
});
Task t2 = Task.Run(() =>
{
//STORE PROCEDURE CALL - INSERISCO I PAST MEETINGS
storeProcedure.insertPastMeetings(ApplicationContext.Instance.LoggedUser.PID, ApplicationContext.Instance.pastmeetingList);
List<PastMeetings> pastMeetingsDB = storeProcedure.selectPastMeetings(ApplicationContext.Instance.LoggedUser.PID);
ApplicationContext.Instance.pastmeetingList = pastMeetingsDB;
});
await Task.WhenAll(t1, t2);
}
catch(Exception ex)
{
throw ex;
}
彼らは定期的に動作するので、私はそれらを呼び出す場合:
log.Info("call GetRecentHomeChanges");
GetRecentHomeChanges resultHomeChanges = await apManager.GetRecentHomeChanges(ApplicationContext.Instance.LoggedUser.UserName, ApplicationContext.Instance.LoggedUser.HashedPwd);
ApplicationContext.Instance.pastmeetingList = resultHomeChanges.PastMeetings;
ApplicationContext.Instance.documentsHomePageList = resultHomeChanges.Attachments;
//STORE PROCEDURE CALL - INSERISCO I PAST MEETINGS
storeProcedure.insertPastMeetings(ApplicationContext.Instance.LoggedUser.PID, ApplicationContext.Instance.pastmeetingList);
List<PastMeetings> pastMeetingsDB = storeProcedure.selectPastMeetings(ApplicationContext.Instance.LoggedUser.PID);
ApplicationContext.Instance.pastmeetingList = pastMeetingsDB;
だから私の問題は、並行して呼び出した場合にのみ発生し、印刷されたエラーコードは次のとおりです。{ "オブジェクト参照のインスタンスに設定されていませんオブジェクト」}
どのように解決できますか?
コールスタックを取り除くことのほかに、 'try ... catch ... throw'のポイントは何ですか? –
ポイントがstoreProcedure.insertPastMeetingsにあります –
タスク2はすでに何かがApplicationContext.Instance.pastmeetingListに設定されていると仮定しているようですが、これが正当なアクションのように思われない場合は、パラレルで実行している場合はタスク2が起動します妥当と思われる – BugFinder