Вот код:
Code
private void OnLogUpdate(ErrorTypes err, string message)
{
this.Log(new LogMessage(this, DateTime.Now, err, message));
}
public T400()
{
plaza = new PlazaTrader(this.StrategyParameters.PlazaRouterPath.To<IPEndPoint>());
this.candleManager = new CandleManager(plaza);
logManager = new LogManager();
logManager.Sources.Add(this);
}
T400 это робот, по сути класс-инфраструктура для запуска стратегии, чтобы он тоже мог писать логи реализуется ILogSource.
На старте робота выполняется:
Code
guiLogListener = new GuiLogListener(_logWindow);
t400.AddLogListener(guiLogListener);
Потом, при выполнении OnLogUpdate ошибка: [System.ArgumentNullException] = {"Значение не может быть неопределенным.\r\nИмя параметра: obj"}
Вот стэктрэйс:
в Ecng.Xaml.XamlHelper.GuiSync(DispatcherObject obj, Action action)
в StockSharp.Xaml.GuiLogListener.OnWriteMessage(LogMessage message)
в StockSharp.Algo.Logging.LogListener.WriteMessage(LogMessage message)
в StockSharp.Algo.Logging.LogManager.#=qrUj$Ns0mMAxxqh0k0FFJLB8wrKr4pz7DsmdCpRVKh18=.#=q3S_X0XbExHKU68uzjbFQVxw4VT4yOdgZvBt8Dr1nZXc=(ILogListener #=qeUzjoy2OxlhpLB1gDjK5qQ==)
в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)
в StockSharp.Algo.Logging.LogManager.#=qm2awVrrxMn_7KT6KAHw0Wg==(LogMessage #=qJiXkieLb13i$V63GpKExqw==)
в Skynet.T400.OnLogUpdate(ErrorTypes err, String message)
Собственно вопрос: что передается в GuiSync в качестве DispatcherObject и почему все ломается.
Второй вопрос: как правильно в такой ситуации реализовать ILogSource, кто будет Parent, кто Childs, и зачем там Guid?
P.S. Ошибка появилась оч недавно, после последнего обновления референсов