Я разрабатываю небольшую надстройку для ESRI ArcGIS Explorer 1200. Само расширение довольно простое, оно просто использует FileSystemWatcher для ожидания входящего файла, а затем обрабатывает файл ,ArcGIS Explorer: вызывать основной поток из вторичного потока
Моя основная проблема: при возникновении события FileSystemWatcher использует другой поток, чем поток GUI. Поэтому я не могу получить доступ к объектам, связанным с GUI. Теперь мне нужно каким-то образом вызвать кусок кода в пользовательском потоке, но я не знаю, как это сделать в мире ArcGIS.
Мой расширение до сих пор выглядит следующим образом:
public class MyExtension : ESRI.ArcGISExplorer.Application.Extension
{
FileSystemWatcher _fsw;
public override void OnStartup()
{
_fsw = new FileSystemWatcher(@"c:\Temp\Import", "*.xml");
_fsw.IncludeSubdirectories = false;
_fsw.Created += FileCreated;
_fsw.EnableRaisingEvents = true;
}
void FileCreated(object sender, FileSystemEventArgs e)
{
GraphicCollection graphic = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay.Graphics; // <-- Threading Exception happens here
MessageBox.Show(Convert.ToString(graphic.Count));
}
public override void OnShutdown()
{
_fsw.EnableRaisingEvents = false;
}
}
Любые идеи, как обойти это?