исключение System.IO.IOException
От: kot--  
Дата: 17.05.08 06:25
Оценка: :)
программа висит в трее и пишет по таймеру в файлы строку, каждый раз перезаписывая их.

беда в том, что на слабой(?) машине 2ГГц ;( иногда кидает исключение, необрабатываесое по записи в файл System.IO.IOException: The requested operation cannot be performed on a file with a user-mapped section open.

а я его, по идее, перехватываю.

не подскажеете, где кроется ошибка? и почему оно вылезает, неужели файл чем-то не освобождается при операции ввода-вывода?

в файл пишется каждые 500мс по таймеру



private void timer_Tick(object Sender, EventArgs e)
  {
       sysUptime = Uptime();
       nowPlay = GetText();       
       notifyIcon.Text =  sysUptime;
       WriteToFiles();
  }


private void WriteToFiles()
 {
 
       try
       { 
          File.WriteAllText("winamp.txt", nowPlay, Encoding.GetEncoding("cp866"));
          File.WriteAllText("uptime.txt",sysUptime);
       }
       catch(IOException e1)
       { 
               notifyIcon.Icon = SystemIcons.Exclamation;
               notifyIcon.BalloonTipTitle = "Error Writing To Files!";
               notifyIcon.BalloonTipText = e1.Message.ToString();
               notifyIcon.BalloonTipIcon = ToolTipIcon.Error;
               notifyIcon.Visible = true;
               notifyIcon.ShowBalloonTip(300);
       }

       
 
 }





***********
System.IO.IOException: The requested operation cannot be performed on a file with a user-mapped section open.

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamWriter.CreateFile(String path, Boolean append)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding)
at System.IO.File.WriteAllText(String path, String contents, Encoding encoding)
at Base.WriteToFiles()
at Base.timer_Tick(Object Sender, EventArgs e)
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
---------------
c уважением, мохнато-полосатый kot--
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.