Вот такая реализация, может ли File.AppendText по каким-то обстоятельствам зависнуть, тем самым создав deadlock ? По идее все операции IO имеют некий таймаут. Ситуацию когда при обращении к файлу зависнет драйвер думаю нет смылса смотреть, т.к. в этом случае придется перезагружать систему.
Какие-то может еще грабли есть от использования lock{} в этом случае ?
public class Log
{
private static string m_LogFilename;
private static object m_LogSync = new object();
public static void Write( string text )
{
lock( m_LogSync )
{
File.AppendText( m_LogFilename, text );
}
}
}
Здравствуйте, <Аноним>, Вы писали:
А>Вот такая реализация, может ли File.AppendText по каким-то обстоятельствам зависнуть, тем самым создав deadlock ? По идее все операции IO имеют некий таймаут. Ситуацию когда при обращении к файлу зависнет драйвер думаю нет смылса смотреть, т.к. в этом случае придется перезагружать систему.
А>Какие-то может еще грабли есть от использования lock{} в этом случае ?
А>
А>public class Log
А>{
А> private static string m_LogFilename;
А> private static object m_LogSync = new object();
А> public static void Write( string text )
А> {
А> lock( m_LogSync )
А> {
А> File.AppendText( m_LogFilename, text );
А> }
А> }
А>}
А>
Почитайте про Asynchronous File I\O
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>