2016-10-12 59 views
0

我有下面这段代码:ZedGraph不配置EMF文件后创建

static internal bool SaveEnhMetafileToFile(Metafile mf, string fileName) 
{ 
    bool bResult = false; 
    IntPtr hEMF; 
    hEMF = mf.GetHenhmetafile(); // invalidates mf 
    if (!hEMF.Equals(new IntPtr(0))) 
    { 
     StringBuilder tempName = new StringBuilder(fileName); 
     CopyEnhMetaFile(hEMF, tempName); 
     DeleteEnhMetaFile(hEMF); 

    } 
    return bResult; 
} 

CopyEnhMetaFile(hEMF, tempName);被调用,创建画面,但调用DeleteEnhMetaFile(hEMF);功能后,因为它由我不能删除照片我的程序(vshost.exe)。 程序在C#创建

+0

这是什么原因:http://stackoverflow.com/questions/ 14869578/copyenhmetafile-is-not-releasing-the-handle-even-if-deleteenhmetafile-is-cal – PaulF

+0

可能,但在该链接中并没有说明如何删除它 –

回答

1

正如我贴的链接说 - 你需要删除由CopyEnhMetaFile创建的句柄:

static internal bool SaveEnhMetafileToFile(Metafile mf, string fileName) 
{ 
    bool bResult = false; 
    IntPtr hEMF; 
    hEMF = mf.GetHenhmetafile(); // invalidates mf 
    if (!hEMF.Equals(new IntPtr(0))) 
    { 
    StringBuilder tempName = new StringBuilder(fileName); 
    IntPtr hCopyEMF = CopyEnhMetaFile(hEMF, tempName.ToString()); 
    DeleteEnhMetaFile(hCopyEMF); 
    DeleteEnhMetaFile(hEMF); 
    } 
return bResult; 
} 
+0

它的工作原理!答案在上面! :) –