В настоящее время я пишу приложение, которое экспортирует определенные области данных некоторых файлов Excel в виде файлов изображений в папку изображений, а затем отображает их. Программа также должна иметь возможность обновлять все файлы (включая их) во время отображения файла.Используйте файл по 2 потокам в то же самое время
Проблема:
Метод ExportRangeAsImage(), который экспортирует область данных файла Excel файлов изображений, называется в качестве фона рабочего, который реализуется в одном классе (ViewModel). Если обновление файла запускается в то время как он отображается в то же время, я получаю следующее сообщение об ошибке:
// ExportRangeAsImage() {
...
System.Windows.Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Normal, new System.Action(() =>
{
Bitmap image = new Bitmap(System.Windows.Forms.Clipboard.GetImage());
if (!file.Contains("XYZ"))
{
//The program stops here
image.Save(ImagePathM1 + Path.GetFileNameWithoutExtension(file) + ".svg"); Marshal.ReleaseComObject(ExcelApp);
}
}));
An unhandled exception of type 'System.Runtime.InteropServices.ExternalException' occurred in System.Drawing.dll Additional information: A generic error occurred in GDI+.**
Я предполагаю, что это происходит потому, что файл, который отображается и файл имеет одно и то же имя, и программа не может изменять или перезаписывать используемый файл!
Можете ли вы помочь мне решить эту проблему ???
Если это ваша забота, решение таково: используйте разные имена файлов в каждом потоке. Вау! Как еще мы можем вам помочь? –
Это не имеет никакого отношения к файлам. Очевидно, ошибка в UI –
@PanagiotisKanavos. Я уверен (http://stackoverflow.com/questions/27438058/image-save-method-is-not-save-image-gdi-error-ccured) что [шансы] (http://stackoverflow.com/questions/15862810/a-generic-error-occured-in-gdi-in-bitmap-save-method) [довольно высокие] (http: // stackoverflow. com/q/5813633/6682181), что он [должен сделать] (http://stackoverflow.com/q/29973934/6682181) с [файлами и многопоточными] (http://stackoverflow.com/q/7694741/6682181). Но, конечно, это также может быть [формат файла] (http://stackoverflow.com/q/1053052/6682181). – haindl