проблема с WhenIntervalElapsed
Atom Ответить
05.07.2012


Как правильно прописывать WhenIntervalElapsed?
при следующем коде метод Test вызывается почему-то несколько раз
Код

protected override void OnStarting()
        {
            this.Trader.WhenIntervalElapsed(new TimeSpan(0, 0, 10)).Do(Test).Apply(this);
            base.OnStarting();
        }
public void Test()
        {
            this.AddInfoLog("1....");
            this.AddInfoLog("2....");
            this.AddInfoLog("3....");
        }

При этом, если в методе Test всего одна строчка, то проблема пропадает.

Теги:


Спасибо:




20 Ответов
Alexander

Фотография
Дата: 05.07.2012
Ответить


Покажите лог, который это воспроизводит. Как правильную на ваш взгляд ситуацию, так и неправильную.
Спасибо:

Azat

Фотография
Дата: 05.07.2012
Ответить


Добавил в OnStarting() что бы было видно, что процесс идет

this.Security.WhenMarketDepthChanged().Do(Test1).Apply(this);

и функцию
Код

private void Test1()
        {
            this.AddInfoLog(this.Security.BestBid.ToString());
        }


и вот, что получается в логах:
| 05.07.2012 18:08:25.484 | | Стратегия запущена.
| 05.07.2012 18:08:25.531 | | Бид 9132 322
| 05.07.2012 18:08:26.515 | | Бид 9132 302
| 05.07.2012 18:08:27.515 | | Бид 9131 320
| 05.07.2012 18:08:28.515 | | Бид 9131 345
| 05.07.2012 18:08:29.546 | | Бид 9132 5
| 05.07.2012 18:08:30.546 | | Бид 9132 11
| 05.07.2012 18:08:31.546 | | Бид 9133 7
| 05.07.2012 18:08:32.546 | | Бид 9132 13
| 05.07.2012 18:08:33.546 | | Бид 9132 5
| 05.07.2012 18:08:34.546 | | Бид 9132 5
| 05.07.2012 18:08:35.515 | | 1...
| 05.07.2012 18:08:35.515 | | 2...
| 05.07.2012 18:08:35.531 | | 3...
| 05.07.2012 18:08:35.546 | | Бид 9132 5
| 05.07.2012 18:08:35.546 | | 1...
| 05.07.2012 18:08:35.562 | | 2...
| 05.07.2012 18:08:35.593 | | 3...
| 05.07.2012 18:08:35.593 | | 1...
| 05.07.2012 18:08:35.609 | | 2...
| 05.07.2012 18:08:35.625 | | 3...
| 05.07.2012 18:08:36.546 | | Бид 9132 25
| 05.07.2012 18:08:37.546 | | Бид 9132 29
| 05.07.2012 18:08:38.546 | | Бид 9132 6
| 05.07.2012 18:08:39.546 | | Бид 9131 1
| 05.07.2012 18:08:40.546 | | Бид 9133 6
| 05.07.2012 18:08:41.546 | | Бид 9130 308
| 05.07.2012 18:08:42.546 | | Бид 9131 370
| 05.07.2012 18:08:43.546 | | Бид 9131 300
| 05.07.2012 18:08:44.546 | | Бид 9131 300
| 05.07.2012 18:08:45.546 | | Бид 9131 325
| 05.07.2012 18:08:45.640 | | 1...
| 05.07.2012 18:08:45.640 | | 2...
| 05.07.2012 18:08:45.671 | | 3...
| 05.07.2012 18:08:45.687 | | 1...
| 05.07.2012 18:08:45.718 | | 2...
| 05.07.2012 18:08:45.781 | | 3...
| 05.07.2012 18:08:46.546 | | Бид 9132 2
Автор топика
Спасибо:

Azat

Фотография
Дата: 05.07.2012
Ответить


А если Test() такой, то почему то нормально
Код

public void Test()
        {
            this.AddInfoLog("1....");
            //this.AddInfoLog("2....");
            //this.AddInfoLog("3....");
        }


Лог:
| 05.07.2012 18:11:57.437 | | Стратегия запущена.
| 05.07.2012 18:11:58.218 | | Бид 9147 95
| 05.07.2012 18:11:59.218 | | Бид 9147 95
| 05.07.2012 18:12:00.218 | | Бид 9147 8
| 05.07.2012 18:12:01.218 | | Бид 9146 120
| 05.07.2012 18:12:02.218 | | Бид 9147 27
| 05.07.2012 18:12:03.218 | | Бид 9147 85
| 05.07.2012 18:12:05.218 | | Бид 9147 40
| 05.07.2012 18:12:06.218 | | Бид 9147 44
| 05.07.2012 18:12:07.218 | | Бид 9147 44
| 05.07.2012 18:12:07.468 | | 1...
| 05.07.2012 18:12:08.218 | | Бид 9147 13
| 05.07.2012 18:12:09.218 | | Бид 9147 3
| 05.07.2012 18:12:10.218 | | Бид 9147 5
| 05.07.2012 18:12:11.218 | | Бид 9147 28
| 05.07.2012 18:12:12.218 | | Бид 9147 28
| 05.07.2012 18:12:13.218 | | Бид 9148 16
| 05.07.2012 18:12:14.218 | | Бид 9148 11
| 05.07.2012 18:12:15.218 | | Бид 9149 231
| 05.07.2012 18:12:16.218 | | Бид 9149 9
| 05.07.2012 18:12:17.218 | | Бид 9149 9
| 05.07.2012 18:12:17.468 | | 1...
| 05.07.2012 18:12:18.218 | | Бид 9149 11
| 05.07.2012 18:12:19.218 | | Бид 9149 10
| 05.07.2012 18:12:20.218 | | Бид 9150 93
| 05.07.2012 18:12:21.218 | | Бид 9152 92
| 05.07.2012 18:12:22.218 | | Бид 9152 3
| 05.07.2012 18:12:23.218 | | Бид 9152 34
| 05.07.2012 18:12:24.218 | | Бид 9152 6
| 05.07.2012 18:12:25.218 | | Бид 9152 28
| 05.07.2012 18:12:26.218 | | Бид 9152 7
| 05.07.2012 18:12:27.218 | | Бид 9153 20
| 05.07.2012 18:12:27.468 | | 1...
Автор топика
Спасибо:

Alexander

Фотография
Дата: 05.07.2012
Ответить


Если брейкпоинт поставить в Test1 в случае где много раз вызывается - это воспроизводится? Правило у вас 1 раз создаётся, из других мест Test1 не вызывается?
Спасибо:

Azat

Фотография
Дата: 05.07.2012
Ответить


Да, с брейкпоинтом тоже,и проект чистый, только начал разбираться с библиотекой - правило один раз создается. Ради интереса, сейчас добавил в пример SampleSMA LogManager и монитор - происходит тоже самое..
Код

protected override void OnStarting()
		{
			_series
				.WhenCandlesFinished()
				.Do(ProcessCandle)
				.Apply(this);

                        this.Security.WhenMarketDepthChanged().Do(Test1).Apply(this);
                        this.Trader.WhenIntervalElapsed(new TimeSpan(0, 0, 10)).Do(Test).Apply(this);

			// запоминаем текущее положение относительно друг друга
			_isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;

			base.OnStarting();
		}


        private void Test1()
        {
            
            this.AddInfoLog(this.Security.BestBid.ToString());

        }

        public void Test()
        {
            this.AddInfoLog("1...");
            this.AddInfoLog("2...");
            this.AddInfoLog("3...");
        }


А когда вместо WhenIntervalElapsed пишу это this.Trader.WhenTimeCome(DateTime.Now.AddSeconds(10)).Do(Test).Apply(this);
то проект просто закрывается через 10 секунд без всяких эксцепшенов.
Автор топика
Спасибо:

Azat

Фотография
Дата: 05.07.2012
Ответить


Вот лог который SampleSMA выдает:
| 05.07.2012 19:03:11.359 | | Стратегия запущена.
| 05.07.2012 19:03:12.375 | | Бид 9197 1
| 05.07.2012 19:03:13.375 | | Бид 9197 1
| 05.07.2012 19:03:14.562 | | Бид 9198 79
| 05.07.2012 19:03:15.562 | | Бид 9198 79
| 05.07.2012 19:03:16.562 | | Бид 9198 79
| 05.07.2012 19:03:17.562 | | Бид 9198 79
| 05.07.2012 19:03:21.390 | | 1...
| 05.07.2012 19:03:21.390 | | 2...
| 05.07.2012 19:03:21.390 | | 3...
| 05.07.2012 19:03:21.562 | | Бид 9199 24
| 05.07.2012 19:03:22.562 | | Бид 9199 24
| 05.07.2012 19:03:23.562 | | Бид 9199 24
| 05.07.2012 19:03:24.562 | | Бид 9199 24
| 05.07.2012 19:03:25.562 | | Бид 9199 24
| 05.07.2012 19:03:26.562 | | Бид 9199 23
| 05.07.2012 19:03:27.562 | | Бид 9199 16
| 05.07.2012 19:03:28.562 | | Бид 9199 15
| 05.07.2012 19:03:29.562 | | Бид 9198 91
| 05.07.2012 19:03:31.390 | | 1...
| 05.07.2012 19:03:31.390 | | 2...
| 05.07.2012 19:03:31.406 | | 3...
| 05.07.2012 19:03:31.421 | | 1...
| 05.07.2012 19:03:31.453 | | 2...
| 05.07.2012 19:03:31.468 | | 3...
| 05.07.2012 19:03:33.562 | | Бид 9198 91
| 05.07.2012 19:03:34.562 | | Бид 9198 91
| 05.07.2012 19:03:35.562 | | Бид 9198 103
| 05.07.2012 19:03:36.562 | | Бид 9198 106
| 05.07.2012 19:03:37.562 | | Бид 9198 91
| 05.07.2012 19:03:38.562 | | Бид 9198 93
| 05.07.2012 19:03:39.562 | | Бид 9198 91
| 05.07.2012 19:03:40.562 | | Бид 9198 91
| 05.07.2012 19:03:41.484 | | 1...
| 05.07.2012 19:03:41.484 | | 2...
| 05.07.2012 19:03:41.484 | | 3...

и сам проект
SampleSMA
Автор топика
Спасибо:

Alexander

Фотография
Дата: 06.07.2012
Ответить


Попробуйте версию с codeplex.
Спасибо:

Azat

Фотография
Дата: 06.07.2012
Ответить


Скачал с codeplex версию 4.1.1. Осталось все тоже самое, похоже, что если эта функция не успела отработать за какой-то промежуток времени, то создаются еще потоки с вызовом этой функции, добавил в Test() кроме записей в лог еще вызов свой функции, которая прогоняет данные по коллекции нейросетей, и количество вызовов с двух-трех увеличилось до пяти.
Код

public void Test()
        {
            this.AddInfoLog("1...");
            Forecasting();
            this.AddInfoLog("2...");
            this.AddInfoLog("3...");
        }

Лог:

| 06.07.2012 15:22:19.812 | | Стратегия запущена.
| 06.07.2012 15:22:20.125 | | Бид 9000 377
| 06.07.2012 15:22:21.125 | | Бид 9000 377
| 06.07.2012 15:22:22.125 | | Бид 9000 377
| 06.07.2012 15:22:23.125 | | Бид 9000 377
| 06.07.2012 15:22:24.125 | | Бид 9000 377
| 06.07.2012 15:22:24.828 | | 1...
| 06.07.2012 15:22:24.843 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64
| 06.07.2012 15:22:24.859 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35
| 06.07.2012 15:22:24.890 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56
| 06.07.2012 15:22:24.906 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57
| 06.07.2012 15:22:24.921 | | 2...
| 06.07.2012 15:22:24.937 | | 3...
| 06.07.2012 15:22:24.937 | | 1...
| 06.07.2012 15:22:24.953 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64
| 06.07.2012 15:22:24.984 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35
| 06.07.2012 15:22:25.000 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56
| 06.07.2012 15:22:25.000 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57
| 06.07.2012 15:22:25.015 | | 2...
| 06.07.2012 15:22:25.015 | | 3...
| 06.07.2012 15:22:25.031 | | 1...
| 06.07.2012 15:22:25.078 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64
| 06.07.2012 15:22:25.093 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35
| 06.07.2012 15:22:25.093 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56
| 06.07.2012 15:22:25.093 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57
| 06.07.2012 15:22:25.109 | | 2...
| 06.07.2012 15:22:25.109 | | 3...
| 06.07.2012 15:22:25.109 | | 1...
| 06.07.2012 15:22:25.125 | | Бид 9000 358
| 06.07.2012 15:22:25.140 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64
| 06.07.2012 15:22:25.156 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35
| 06.07.2012 15:22:25.171 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56
| 06.07.2012 15:22:25.171 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57
| 06.07.2012 15:22:25.171 | | 2...
| 06.07.2012 15:22:25.187 | | 3...
| 06.07.2012 15:22:25.203 | | 1...
| 06.07.2012 15:22:25.218 | | Process. Коллекция: FUT_SBER60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 -0,64 Среднее: -0,64
| 06.07.2012 15:22:25.234 | | Process. Коллекция: IND_RTS60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 -0,35 Среднее: -0,35
| 06.07.2012 15:22:25.250 | | Process. Коллекция: IND_MICEX60 Дата: 6 июля 2012 г. Время: 14:00:00 Результат: 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 1,56 Среднее: 1,56
| 06.07.2012 15:22:25.250 | | Прогнозирование. _general_director.Name: FUT_SBER60 = -0,64 IND_RTS60 = -0,35 Cor = 1,00 IND_MICEX60 = 1,56 Cor = 1,00 result: 0,57
| 06.07.2012 15:22:25.250 | | 2...
| 06.07.2012 15:22:25.265 | | 3...
| 06.07.2012 15:22:26.125 | | Бид 9000 358
| 06.07.2012 15:22:27.125 | | Бид 9000 5
| 06.07.2012 15:22:28.125 | | Бид 9000 15
| 06.07.2012 15:22:29.125 | | Бид 9000 15
| 06.07.2012 15:22:30.125 | | Бид 9000 21
Автор топика
Спасибо:

Alexander

Фотография
Дата: 06.07.2012
Ответить


Я имел в виду попробуйте версию с codeplex из исходников, из папки trunk\References
Спасибо:

Azat

Фотография
Дата: 06.07.2012
Ответить


С trunk не собирается, говорит что
Цитата:

Ошибка 1 "StockSharp.Quik.QuikTrader" не содержит определения для "RegisterQuotes" и не был найден метод расширения "RegisterQuotes", принимающий тип "StockSharp.Quik.QuikTrader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)

А если заменить StockSharp.Algo.dll из trunk на версию из 4.1.1, то собирается, но при запуске выдает
Цитата:

Отсутствует реализация метода "get_RegisteredSecurities" в типе "StockSharp.Quik.QuikTrader" из сборки "StockSharp.Quik, Version=4.1.2.0, Culture=neutral, PublicKeyToken=null".
Автор топика
Спасибо:

Alexander

Фотография
Дата: 06.07.2012
Ответить


Azat Перейти
С trunk не собирается, говорит что
Цитата:

Ошибка 1 "StockSharp.Quik.QuikTrader" не содержит определения для "RegisterQuotes" и не был найден метод расширения "RegisterQuotes", принимающий тип "StockSharp.Quik.QuikTrader" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку)

А если заменить StockSharp.Algo.dll из trunk на версию из 4.1.1, то собирается, но при запуске выдает
Цитата:

Отсутствует реализация метода "get_RegisteredSecurities" в типе "StockSharp.Quik.QuikTrader" из сборки "StockSharp.Quik, Version=4.1.2.0, Culture=neutral, PublicKeyToken=null".



Ух. не собирается что? Ваш проект? Ну так поправьте всё что он вам говорит.
RegisterQuotes переименовался в RegisterMarketDepth
Спасибо:

Azat

Фотография
Дата: 06.07.2012
Ответить


Да, собрал, не сообразил просто, что метод переименовали:)
А проблема осталось, только теперь не 5 вызовов с включенным прогоном по нейросетям, а так же два-три.
Автор топика
Спасибо:

Moadip

Фотография
Автор статей Программист
Дата: 06.07.2012
Ответить


Попробовал воспроизвести ошибку. Сборка 18107.

Это если в качестве вывода лога использовать GuiLogListener.
Если с FileLogListener, бага нет.

Но если воткнуть искусственную задержку, то баг снова появляется.
Код

        private void Test()
        {
            this.AddInfoLog("1....");
            this.AddInfoLog("2....");
            this.AddInfoLog("3....");
            Thread.Sleep(500);
        }
Спасибо:

Alexander

Фотография
Дата: 06.07.2012
Ответить


18108 последняя, её и надо использовать. В ней я фиксил.
Спасибо:

Azat

Фотография
Дата: 06.07.2012
Ответить


Спасибо, в 18108 проблема исчезла:)
Вот только проблема с MarketRuleHelper.WhenTimeCome осталось
Если добавить следующее, то приложение просто падает через 10 секунд без эксцепшенов, а логах из файла видно, что напоследок оно так же несколько раз вызвало Test()

Код

this.Trader.WhenTimeCome(DateTime.Now.AddSeconds(10)).Do(Test).Apply(this);
Автор топика
Спасибо:

Azat

Фотография
Дата: 09.07.2012
Ответить


А если использовать следующий код, то падает только на последнем элементе, то есть через 20 секунд после запуска.
Код

this.Trader.WhenTimeCome(new []{DateTime.Now.AddSeconds(10),DateTime.Now.AddSeconds(15), DateTime.Now.AddSeconds(20)}).Do(Test).Apply(this);
Автор топика
Спасибо:

Alexander

Фотография
Дата: 09.07.2012
Ответить


Ставьте брейкпоинты в ваш метод Test, смотрите где конкретно падает. Смотрите под VS, в окно Output он всё напишет.
Чудес не бывает, приложение не может падать просто так.
Спасибо:

Azat

Фотография
Дата: 09.07.2012
Ответить


до 18108, он просто падал, никаких сообщений в Output не выводил, в логах было видно, что он запускал Test() несколько раз,
сейчас в логах из файла так:
Цитата:

12:23:17.500 | | Стратегия запущена.
12:23:16.421 | | QuikTrader | Экспорт запущен.
12:23:18.109 | | Бид 9017 10
12:23:19.109 | | Бид 9017 20
12:23:20.109 | | Бид 9017 20
12:23:21.109 | | Бид 9017 20
12:23:22.109 | | Бид 9015 11
12:23:23.109 | | Бид 9014 35
12:23:24.109 | | Бид 9016 10
12:23:25.109 | | Бид 9016 10
12:23:26.109 | | Бид 9015 10
12:23:27.109 | | Бид 9015 10
12:23:27.531 | | 1...
12:23:27.593 | | 2...
12:23:27.609 | | 3...
12:23:28.109 | | Бид 9016 10
12:23:29.109 | | Бид 9016 9
12:23:30.109 | | Бид 9015 9
12:23:32.109 | | Бид 9015 9
12:23:32.531 | | 1...
12:23:32.531 | | 2...
12:23:32.546 | | 3...
12:23:33.109 | | Бид 9015 9
12:23:34.109 | | Бид 9015 9
12:23:35.109 | | Бид 9015 9
12:23:36.109 | | Бид 9015 9
12:23:37.109 | | Бид 9015 9
12:23:37.531 | | 1...
12:23:37.531 | | 2...
12:23:37.578 | | 3...
12:23:37.640 | Error | UnhandleException | System.IndexOutOfRangeException: Индекс находился вне границ массива.
в StockSharp.Algo.MarketRuleHelper.#=q5tE5pMwBLHpbY5GB03GIig==.#=qpwQa0ec4L11d9qoHhvukUQ==(MarketTimer #=qrp1xDbP_kZMfjVGQfYoKiQ==, Boolean #=qkLAqWGH2XKiJVtIFuXfv0Q==)
в StockSharp.Algo.MarketTimer.#=qHWOSW6k$_YnVe_5fvF$1lVbPeaqRg9hj5p9vwh7OX6w=()
в Ecng.Common.DelegateHelper.SafeInvoke(Action handler)
в StockSharp.Algo.BaseTrader.RaiseMarketTimeChanged()
в StockSharp.Algo.BaseTrader.OnMarketTimeChanged()
в Ecng.Common.ThreadingHelper.<>c__DisplayClass1.<Timer>b__0(Object s)
в System.Threading._TimerCallback.TimerCallback_Context(Object state)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
в System.Threading._TimerCallback.PerformTimerCallback(Object state)
Автор топика
Спасибо:

Alexander

Фотография
Дата: 09.07.2012
Ответить


Не воспроизводится у меня.
Используется 4.1.2?

Если да - кидайте минимальный проект, на котором это воспроизведётся.
Спасибо:

Azat

Фотография
Дата: 09.07.2012
Ответить


Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy