SAP Middleware Connector错误

时间:2018-07-31 22:41:12

标签: c# sap

我正在开发一个使用SAP AG(版本3.0.2)中的SAP.Middleware.Connector的应用程序。

此应用程序在后台执行RFC(使用Task.Run),但几分钟后,该应用程序崩溃,在此图像中显示了堆栈跟踪。

img


  

DefaultDomain中未捕获的异常,堆栈跟踪:   System.UnhandledExceptionEventArgs

     

未处理的异常:System.InvalidOperationException:集合已修改;枚举操作可能无法执行。

     

在System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource资源)       在System.Collections.Generic.Dictionary'2.KeyCollection.Enumerator.MoveNext()       在SAP.Middleware.Connector.RfcSessionManager.UpdateSessions(对象状态)       在System.Threading.TimerQueueTimer.CallCallbackInContext(对象状态)       在System.Threading.Executioncontext.RunInternal(ExecutionContext executeContext,ContextCallback,对象状态,布尔类型saveSyncCtx)       在System.Threading.Executioncontext.Run(ExecutionContext执行上下文,ContextCallback,对象状态,布尔类型saveSyncCtx)       在System.Threading.TimerQueueTimer.CallCallback()       在System.Threading.TimerQueueTimer.Fire()       在System.Threading.TimerQueueTimer.FireNextTimers()       在System.Threading.TimerQueueTimer.AppDomainTimerCallback()

这是RFC执行的代码:

return Task.Run(() =>
ConexionSAP cSap = new ConexionSAP();
cSap.ConectaSAP();
RfcDestination rfcDest = RfcDestinationManager.GetDestination(cSap.rfc);

RfcRepository rfcRep = rfcDest.Repository;
IRfcFunction function;
function = rfcRep.CreateFunction("XXXNAMEOFTHEFUNCTIONXXX");

//import parameters
RfcSessionManager.BeginContext(rfcDest);
function.Invoke(rfcDest);

//export parameters
RfcSessionManager.EndContext(rfcDest);
});

请,您能帮忙吗?

1 个答案:

答案 0 :(得分:0)

谢谢您的帮助!

我正在回答这个问题。 如果在线程上使用 BeginContext EndContext ,连接器将尝试更新连接,但是现在包含该连接的线程消失了,从而导致错误,集合已修改;枚举操作可能无法执行。

解决方案是删除 BeginContext EndContext 行,一切正常且正常。