2014-09-18 3 views
0

Когда мой сервер RTD запускается, он проходит через вызовы ServerStart и ConnectData, а затем, когда данные начинают поступать, он получает вызов ServerTerminate, который отключает все. я добавил трассировки стека дампа, но это не говорит мне ничего полезного:Сервер Excel RTD неожиданно ServerTerminate

public void ServerTerminate() 
     { 
      Logger.DebugLog("TRACE: ServerTerminate {0}", new System.Diagnostics.StackTrace(true)); 

      timer_.Dispose(); 
      DataSource.Shutdown(); 
      topicIdMap_.Clear(); 
      fieldLookup_.Clear(); 
     } 

2014-09-18 11:22:12Z TRACE: ServerTerminate at Mike.RtdServer.ServerTerminate() in c:\Code\Mike\RtdServer.cs:line 347 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 

Что может вызвать этот призыв к ServerTerminate?

+0

как насчет отправки кода, который вызывает этот метод 'ServerTerminate()', также может быть проблема с тем, как вы используете/вызываете таймер .. используете ли вы какой-либо механизм блокировки? Я думаю, что вам нужно показать больше кода. – MethodMan

+0

Это RTD-сервер: Excel вызывает ServerStart и ServerTerminate. Я не вызываю ни одного из них напрямую – user3902302

+0

Я не использую какие-либо блокировки, и таймер - это то, что я добавил, чтобы попытаться обойти проблему (очевидно, Excel не нравится, если вы слишком часто вызываете UpdateNotify(), поэтому я использую таймер для калибровки один раз в секунду. – user3902302

ответ

0

Проблема была неинициализированным списком, доступным во время вызова ConnectData().