Нужно сделать класс, который кроме всего прочего должен определять не изменился ли
определенный файл и выводить сообщение в Form1.TextBox1. Написал так:
- Код: Выделить всё
Public Class calc
....
Public FileName As String
Private WithEvents File_watcher As New System.IO.FileSystemWatcher
....
File_watcher.Filter = GetName(Me.FileName)
File_watcher.Path = GetDir(Me.FileName)
File_watcher.NotifyFilter = IO.NotifyFilters.LastWrite
File_watcher.EnableRaisingEvents = True
....
Public Sub File_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles File_watcher.Changed
Form1.TextBox1.AppendText(Me.FileName & " was changed" & vbCrLf)
End Sub
...
End Class
Объекты calc создаю в Form1 и складываю в Collection.
Так вот, когда в calc выполняется File_Changed происходит ошибка:
"An error occurred creating the form.
See Exception.InnerException for details.
The error is: ActiveX control
'cee14395-1196-4b60-8251-e8eb840658c2'
cannot be instantiated because the current
thread is not in a single-threaded apartment."
То есть прямо в Form1.TextBox1 текст добавить не получается, однако если в
File_Changed написать "MsgBox(Me.FileName & " was changed!")" вместо
"Form1.TextBox1.AppendText(Me.FileName & " was changed" & vbCrLf) " - то все ОК, никакой ошибки,
показывается MsgBox. Но MsgBox нафиг не нужен.
В других местах calc "Form1.TextBox1.AppendText...." катит без проблем.
Или может кто знает как обойтись без System.IO.FileSystemWatcher?
Заранее благодарен.
-------------------------------
Win XP SP2, Visual Studio 2005.