.NET 4.x Разные потоки - одинаковые файлы (мистика или глюк) - C#
Формулировка задачи:
Я в шоке, что такое в принципе возможно! Может кто-нибудь из профи подскажет чем может быть проблема. В общем у меня такая ситуация:
Есть 2 директории. В каждой копия экзешника моей проги. Прога считает нейросети, которые генерируются при запуске и инициализируются случайными числами. Программы запускаются и что-то считают долгое время. Там в каждой куча генераторов случайных чисел и все данные разные.
Каждый 1000-й цикл прога начинает выгружать статистику в файл. И чудо заключается в том, что файлы выгруженные примерно в одно время получаются одинаковыми. Выгрузка осуществляется командой:
Возможно как-то влияет, что расчеты выполняются в функции timer_CalculationTick, которая вызывается так:
Выгрузка в файл вызывается из timer_CalculationTick и занимает минут 15-20, поэтому иногда разные экземпляры начинают выгрузку в файлы в одно время. Вот два файла (у них даже названия разные), с одинаковым содержимым. Вот как это выглядит:
По моему это мистика! Так получается, что данные из одного потока пишутся в другой поток. Ситуация повторяется на разных ОС (Win 7 и 8). Кто-нибудь может совершить акт экзорцизма и изгнать глюк из кода?
File.WriteAllText(path + "\\mood_" + startDateTime + "__" + stopDateTime + ".csv", strMoodParam);
timerCalculation = new Timer(); timerCalculation.Interval = 10; timerCalculation.Tick += new EventHandler(timer_CalculationTick); timerCalculation.Start(); // Поехали!
Решение задачи: «.NET 4.x Разные потоки - одинаковые файлы (мистика или глюк)»
textual
Листинг программы
var rand = new Random((int) (DateTime.Now.Ticks ^ Thread.CurrentThread.ManagedThreadId));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д