C# 两个线程同时使用一个文件
我目前正在编写一个应用程序,将某些Excel文件的某些数据区域作为图像文件导出到图像文件夹,然后显示它们。 程序还应能够在文件显示期间更新所有文件(包括这些文件) 问题: ExportRangeAsImage()方法将Excel文件的数据区域导出为图像文件,该方法在后台工作程序中调用,该工作程序在同一类(ViewModel)中实现。 如果文件的更新在同时显示时运行,则会出现以下错误:C# 两个线程同时使用一个文件,c#,wpf,C#,Wpf,我目前正在编写一个应用程序,将某些Excel文件的某些数据区域作为图像文件导出到图像文件夹,然后显示它们。 程序还应能够在文件显示期间更新所有文件(包括这些文件) 问题: ExportRangeAsImage()方法将Excel文件的数据区域导出为图像文件,该方法在后台工作程序中调用,该工作程序在同一类(ViewModel)中实现。 如果文件的更新在同时显示时运行,则会出现以下错误: // ExportRangeAsImage() { ... System.Windows.Applica
// 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);
}
}));
中发生类型为“System.Runtime.InteropServices.ExternalException”的未处理异常
System.Drawing.dll其他信息:中发生一般错误
GDI+**
我猜这是因为正在显示的文件和文件具有相同的名称,并且程序无法更改或覆盖正在使用的文件
你能帮我解决这个问题吗?我推测
ImagePathM1
在你的GUI线程上处于活动状态,这是另一个试图访问实际共享资源的线程出现问题的根源。将ImagePathM1
的值传递给次线程,而不是让线程直接访问ImagePathM1
引用 如果您担心这个问题,那么解决方案是:在每个线程中使用不同的文件名。哇!我们还能为你做些什么?这与文件无关。这个错误显然是关于UI@PanagiotisKanavos我很抱歉,你就是这样。当然也可能是这样。问题已经解决:)!