Пользователю требовалась лицензия MSDN для использования Visual Studio в дополнение к правильной группе проекта VSTS. Пробная лицензия была недостаточно хороша.
То, что Вы отправили, выглядит хорошо от многопоточности perpective. Хотя я мог быть неправым, будет казаться, что любой другой код, который делает некоторую многопоточность (даже использующий объект нечто) должен быть безопасным. Конечно, я не вижу мертвых блокировок в том разделе кода.
Несколько вещей, которые стоит отметить так или иначе (кроме того, чтобы быть очень осторожным с мертвыми блокировками и тестирующий строго для обеспечения, они не произойдут):
StreamWriter
объект в этом случае является частным, который хорош. Если бы это было защищено или внутреннее, то необходимо было бы, конечно, быть осторожны относительно того, как другой код использовал объект (на самом деле, я думаю, что было бы лучше почти всегда объявить такие объекты как частные).this
или StreamWriter
сам объект).Однако, я могу пропускать что-то, и существует маленькая возможность, что некоторый другой код, не показанный выше, мог бы вызвать проблемы, но насколько я вижу его, что код не испорчен за исключением возможной недостающей блокировки вокруг кода конструктора. Вам придется, более вероятно, не упустить ситуации с мертвой блокировкой, когда Вы начнете делать более сложную многопоточность, особенно через классы/экземпляры.
Так или иначе, надежда, которая помогает.
Обработчик событий находится на том же потоке как генератор событий, что означает, что Ваше приложение могло закончить тем, что поддержалось Вашей записью файла журнала.
private void Foo_Update(object sender, SomeArgs args) {
ThreadPool.QueueUserWorkItem(WriteAsync, args);
}
private void WriteAsync(object state) {
SomeArgs args = (SomeArgs)state;
lock (m_WriteLock) {
m_Writer.WriteLine (args);
m_Writer.Flush ();
}
}
Ну, это смотрит хорошо мне; я, вероятно, реализовал бы IDisposable
как средство для Close()
файл, но...
Конечно, Вы могли также использовать любой из (много) предконсервированные платформы журналирования.
Обновление:
Одна мысль: Вы могли бы хотеть рассмотреть то, что происходит, если файл уже существует; Вы не хотите топать на своих журналах...