2016-03-23 16 views
1

Kodun bir kısmının bir EPS dosyası aldığını, .scs dosyasını bir .jpg dosyasına dönüştürmek için Ghostscript uygulamasını kullandığı bir uygulama üzerinde çalışıyorum ve daha sonra PictureBox denetimine .jpg. Tüm bunlar iyi çalışıyor gibi görünüyor, ancak, uygulama JPGs depolar ve kullanıcı formdaki "Çıkış" düğmesine tıkladığında hepsini silmek için "temp" klasörünü yinelemeye çalışıyorum. dosya silinmek üzere kodudur: Dosya erişemez "süreci: ayıklama, ben bir IOException hatası alıncaUygulama dosyayı yayınlamayacaktır (Olası Ghostscript Say)

Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click 
    frmFigureViewer.picMyJPEG.Image = Nothing 
    'Clear folder contents if folder exists, ON Form Load 
    If Directory.Exists("C:\Temp\StandaloneRPSTLViewer") Then 
     For Each FilesToDelete In System.IO.Directory.GetFiles("C:\Temp\StandaloneRPSTLViewer") 
      System.IO.File.Delete(FilesToDelete) 
     Next FilesToDelete 
    End If 
    Me.Close() 
End Sub 

Ancak 'C: \ Temp \ StandaloneRPSTLViewer \ MXP56962.jpg' o olmak çünkü başka bir süreç tarafından kullanılıyor. "

Aşağıda, sorunun büyük olasılıkla var olduğu ikinci bir kod snippet'i sağladım. Gerekirse ve birisi beni doğru yöne yönlendirebilirse, proje dosyalarını kendisinin daha kolay hale getirmesi için kendim yükleyebilirim.

Private Sub btnDisplay_Click(sender As System.Object, e As System.EventArgs) Handles btnDisplay.Click 
    frmMain.CurrentFigure = txtFigure.Text 
    frmMain.MyTMCode = txtMyTMCode.Text 
    frmFigureViewer.WindowState = FormWindowState.Maximized 
    frmFigureViewer.Show() 
    Dim ArrayUpperBound = FGCFigNo.Length 
    FigureResult = Enumerable.Range(0, FGCFigNo.Length).Where(Function(f) FGCFigNo(f) = frmMain.CurrentFigure).ToArray 
    frmFigureViewer.lblFGCfromFGCList.Text = FGCCode(FigureResult(0)) 
    frmFigureViewer.lblTOPCurrentFigureTitle.Text = FGCTitle(FigureResult(0)) 
    frmFigureViewer.lblTOPDisplayFigure.Text = FGCFigNo(FigureResult(0)) 
    frmFigureViewer.lblCurrentSheet.Text = FGCSheetNo(FigureResult(0)) 
    frmFigureViewer.lblFinalSheet.Text = FGCSheetNo(FigureResult(FigureResult.Length - 1)) 
    ArtResult = FGCArtID(FigureResult(frmFigureViewer.lblCurrentSheet.Text - 1)) 
    Dim JpgFilePath As String = "C:\Temp\StandaloneRPSTLViewer" + "\" + Mid(ArtResult, 1, ArtResult.Length - 4) + ".jpg" 
    If File.Exists(JpgFilePath) Then 
     GoTo OnlyDisplay 
    End If 
    Dim SourceFile As String = "" 
    Dim DestinationFile As String = "" 
    Dim EpsFilePath As String = ARTFOLDER + "\" + ArtResult 
    If Not Directory.Exists("C:\Temp\StandaloneRPSTLViewer") Then 'If ArtFile staging folder does not exist, create it 
     MkDir("C:\Temp\StandaloneRPSTLViewer") 
    End If 



    SourceFile = EpsFilePath 
    DestinationFile = Mid(EpsFilePath, 1, Len(EpsFilePath) - 4) + " view.eps" 
    FileCopy(SourceFile, DestinationFile) 

    EpsFilePath = DestinationFile 

    RunGS("-q", "-dNOPAUSE", "-dBATCH", "-dSAFER", "-sDEVICE=jpeg", _ 
     "-r600", "-dJPEGQ=100", "-dEPSCrop", "-dDownScaleFactor=0", "-dTextAlphaBits=4", "-dGraphicsAlphaBits=4", _ 
     "-sPAPERSIZE=letter", "-sOutputFile=" & JpgFilePath, EpsFilePath) 
    Kill(EpsFilePath) 'KILLS THE "...view.eps" temporary file in the working folder. 
OnlyDisplay: 
    frmFigureViewer.picMyJPEG.Image = Image.FromFile(JpgFilePath) 

    Fig036Result = Enumerable.Range(0, FIGURENO.Length).Where(Function(f) FIGURENO(f) = frmMain.CurrentFigure).ToArray 'Build subset array where FigureNo = Contents of Figure text box 

    'BUILD DICTIONARY HERE' 
    Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String) 
    Dim DictionaryFigureNumber As Integer = 1 
    Dim DictionarySortPosition As Integer = 1 
    Do Until DictionaryFigureNumber = 1000 
     Dim DictionaryFigureLetterASCII As Integer = 65 
     dict.Add(DictionaryFigureNumber, DictionarySortPosition) 
     DictionarySortPosition = DictionarySortPosition + 1 
     Do Until DictionaryFigureLetterASCII = 91 

      dict.Add(DictionaryFigureNumber & Chr(DictionaryFigureLetterASCII), DictionarySortPosition) 
      DictionarySortPosition = DictionarySortPosition + 1 
      DictionaryFigureLetterASCII = DictionaryFigureLetterASCII + 1 
     Loop 
     DictionaryFigureNumber = DictionaryFigureNumber + 1 
    Loop 
    'END OF DICTIONARY BUILDING 

    Dim TempLength = Fig036Result.GetLength(0) 
    TempLength = TempLength - 1 
    Dim CurrentPlace As Integer 
    CurrentPlace = 0 
    Dim TempItemNo As String 
    TempItemNo = "" 
    Dim ArrayString As String 
    ArrayString = "" 
    Array.Clear(FinalDataArray, 0, FinalDataArray.Length) 
    Array.Clear(FinalSortArray, 0, FinalSortArray.Length) 
    'Build smaller subset array that contains concatonated strings ONLY for figure listed in textbox. 
    Do Until CurrentPlace > TempLength 

     Dim ArrayLocation As Integer = Fig036Result(CurrentPlace) 
     If txtMyTMCode.Text = TMCODE(ArrayLocation) Then 'If statement to restrict text data in viewer to ONLY TM Code provided in the textbox 
      TempItemNo = ITEMNO(ArrayLocation) 
      TempSMR = SMnR(ArrayLocation) 
      TempNSN = NSN(ArrayLocation) 
      TempCAGE = CAGE(ArrayLocation) 
      TempPartNum = PARTNUM(ArrayLocation) 
      TempDescription = ITEMName(ArrayLocation) 
      TempUOC = UOC(ArrayLocation) 
      TempQTY = QTYFIG(ArrayLocation) 
      TempIndvFGC = FGC(ArrayLocation) 
      TempPLISN = PLISN(ArrayLocation) 
      TempNHAPLISN = NHAPLISN(ArrayLocation) 
      If TMIND(ArrayLocation) = "" Then 
       TempTMIND = "" 
      ElseIf TMIND(ArrayLocation) = "1" Then 
       TempTMIND = "*" 
      ElseIf TMIND(ArrayLocation) = "2" Then 
       TempTMIND = "**" 
      ElseIf TMIND(ArrayLocation) = "3" Then 
       TempTMIND = "***" 
      ElseIf TMIND(ArrayLocation) = "4" Then 
       TempTMIND = "****" 
      ElseIf TMIND(ArrayLocation) = "5" Then 
       TempTMIND = "*****" 
      ElseIf TMIND(ArrayLocation) = "6" Then 
       TempTMIND = "******" 
      ElseIf TMIND(ArrayLocation) = "7" Then 
       TempTMIND = "*******" 
      ElseIf TMIND(ArrayLocation) = "8" Then 
       TempTMIND = "********" 
      ElseIf TMIND(ArrayLocation) = "9" Then 
       TempTMIND = "*********" 
      ElseIf TMIND(ArrayLocation) = "10" Then 
       TempTMIND = "**********" 
      End If 

      Dim TempValue As String = "" 
      dict.TryGetValue(TempItemNo, TempValue) 
      ArrayString = TempItemNo + "|" + TempSMR + "|" + TempNSN + "|" + TempCAGE + "|" + TempPartNum + "|" + TempDescription + "|" + TempUOC + "|" + TempQTY + "|" + TempIndvFGC + "|" + TempPLISN + "|" + TempNHAPLISN + "|" + TempTMIND + "|" 
      FinalDataArray(CurrentPlace) = ArrayString 

      FinalSortArray(CurrentPlace) = TempValue 


     End If 
     CurrentPlace = CurrentPlace + 1 
    Loop 
    Dim DisplayArray(CurrentPlace - 1) As String 
    Array.Clear(DisplayArray, 0, DisplayArray.Length) 
    Dim DisplayArrayCounter As Integer 
    DisplayArrayCounter = 0 
    Array.Sort(FinalSortArray, FinalDataArray) 
    For Each item In FinalDataArray 
     If Not item Is Nothing Then 
      DisplayArray(DisplayArrayCounter) = item 
      DisplayArrayCounter = DisplayArrayCounter + 1 
     End If 
    Next 

    Dim i As Integer 
    Dim VertLocation As Integer = 5 
    Dim Mypos As Integer 
    Dim FillerItemNo As String = "" 
    Dim FillerSMR As String = "" 
    Dim FillerNSN As String = "" 
    Dim FillerCage As String = "" 
    Dim FillerPartNum As String = "" 
    Dim FillerDesc As String = "" 
    Dim FillerUOC As String = "" 
    Dim FillerQTY As String = "" 
    Dim FillerFGC As String = "" 
    Dim FillerPLISN As String = "" 
    Dim FillerNHAPLISN As String = "" 
    Dim FillerTMIND As String = "" 
    Dim FGCConflict As Boolean 
    'Loop to split up Concatonated Strings, Create Textboxes, and Fill Them 
    For i = 0 To (DisplayArray.Length - 1) 
     If DisplayArray(i) = "" Then Exit For 
     Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
     If Mypos > 0 Then 
      FillerItemNo = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerSMR = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerNSN = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerCage = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerPartNum = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerDesc = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerUOC = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerQTY = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerFGC = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerPLISN = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerNHAPLISN = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
      Mypos = InStr(1, DisplayArray(i), "|", CompareMethod.Binary) 
      FillerTMIND = Mid(DisplayArray(i), 1, Mypos - 1) 
      DisplayArray(i) = Mid(DisplayArray(i), Mypos + 1, Len(DisplayArray(i))) 
     End If 



     Dim VertPT As Point = New Point(20, VertLocation) 
     'ItemNo 
     Dim MytxtBoxItemNo As TextBox = New TextBox 
     MytxtBoxItemNo.Name = "txtItemNo" & i + 1 
     MytxtBoxItemNo.Location = VertPT 
     MytxtBoxItemNo.Text = FillerItemNo 
     MytxtBoxItemNo.Visible = True 
     MytxtBoxItemNo.Height = 20 
     MytxtBoxItemNo.Width = 30 
     MytxtBoxItemNo.ScrollBars = ScrollBars.Horizontal 
     'SMRCode 
     VertPT = New Point(80, VertLocation) 
     Dim MytxtboxSMR As TextBox = New TextBox 
     MytxtboxSMR.Name = "txtSMR" & i + 1 
     MytxtboxSMR.Location = VertPT 
     MytxtboxSMR.Text = FillerSMR 
     MytxtboxSMR.Visible = True 
     MytxtboxSMR.Height = 20 
     MytxtboxSMR.Width = 50 
     MytxtboxSMR.ScrollBars = ScrollBars.Horizontal 
     'NSN 
     VertPT = New Point(170, VertLocation) 
     Dim MytxtboxNSN As TextBox = New TextBox 
     MytxtboxNSN.Name = "txtNSN" & i + 1 
     MytxtboxNSN.Location = VertPT 
     If FillerNSN = "" Then 
      FillerNSN = "NO NSN" 
      MytxtboxNSN.ForeColor = System.Drawing.Color.Red 
     End If 
     MytxtboxNSN.Text = FillerNSN 
     MytxtboxNSN.Visible = True 
     MytxtboxNSN.Height = 20 
     MytxtboxNSN.Width = 90 
     MytxtboxNSN.ScrollBars = ScrollBars.Horizontal 
     'CAGE 
     VertPT = New Point(290, VertLocation) 
     Dim MytxtboxCAGE As TextBox = New TextBox 
     MytxtboxCAGE.Name = "txtCage" & i + 1 
     MytxtboxCAGE.Location = VertPT 
     MytxtboxCAGE.Text = FillerCage 
     MytxtboxCAGE.Visible = True 
     MytxtboxCAGE.Height = 20 
     MytxtboxCAGE.Width = 50 
     MytxtboxCAGE.ScrollBars = ScrollBars.Horizontal 
     'PART NUMBER 
     VertPT = New Point(360, VertLocation) 
     Dim MytxtboxPartNum As TextBox = New TextBox 
     MytxtboxPartNum.Name = "txtPartNum" & i + 1 
     MytxtboxPartNum.Location = VertPT 
     MytxtboxPartNum.Text = FillerPartNum 
     MytxtboxPartNum.Visible = True 
     MytxtboxPartNum.Height = 20 
     MytxtboxPartNum.Width = 70 
     MytxtboxPartNum.ScrollBars = ScrollBars.Horizontal 
     'TM IND 
     VertPT = New Point(455, VertLocation) 
     Dim MytxtboxTMIND As TextBox = New TextBox 
     MytxtboxTMIND.Name = "txtTMIND" & i + 1 
     MytxtboxTMIND.Location = VertPT 
     MytxtboxTMIND.Text = FillerTMIND 
     MytxtboxTMIND.AutoSize = False 
     MytxtboxTMIND.Font = New Font(Me.Font.FontFamily, 20, FontStyle.Bold, GraphicsUnit.Pixel) 
     MytxtboxTMIND.Visible = True 
     MytxtboxTMIND.Height = 20 
     MytxtboxTMIND.Width = 80 
     MytxtboxTMIND.ScrollBars = ScrollBars.Horizontal 
     'Description 
     VertPT = New Point(554, VertLocation) 
     Dim MytxtboxDesc As TextBox = New TextBox 
     MytxtboxDesc.Name = "txtDesc" & i + 1 
     MytxtboxDesc.Location = VertPT 
     MytxtboxDesc.Text = FillerDesc 
     MytxtboxDesc.Visible = True 
     MytxtboxDesc.Height = 20 
     MytxtboxDesc.Width = 160 
     MytxtboxDesc.ScrollBars = ScrollBars.Horizontal 
     'UOC 
     VertPT = New Point(740, VertLocation) 
     Dim MytxtboxUOC As TextBox = New TextBox 
     MytxtboxUOC.Name = "txtUOC" & i + 1 
     MytxtboxUOC.Location = VertPT 
     MytxtboxUOC.Text = FillerUOC 
     MytxtboxUOC.Visible = True 
     MytxtboxUOC.Height = 20 
     MytxtboxUOC.Width = 100 
     MytxtboxUOC.ScrollBars = ScrollBars.Horizontal 
     'QTY 
     VertPT = New Point(870, VertLocation) 
     Dim MytxtboxQTY As TextBox = New TextBox 
     MytxtboxQTY.Name = "txtQTY" & i + 1 
     MytxtboxQTY.Location = VertPT 
     MytxtboxQTY.Text = FillerQTY 
     MytxtboxQTY.Visible = True 
     MytxtboxQTY.Height = 20 
     MytxtboxQTY.Width = 40 
     MytxtboxQTY.ScrollBars = ScrollBars.Horizontal 
     'Item's individual FGC 
     VertPT = New Point(940, VertLocation) 
     Dim MytxtboxFGC As TextBox = New TextBox 
     MytxtboxFGC.Name = "txtFGC" & i + 1 
     MytxtboxFGC.Location = VertPT 
     Dim FirstFourIndvFGC As String = Mid(FillerFGC, 1, 4) 
     Dim FirstFourFGCList As String = frmFigureViewer.lblFGCfromFGCList.Text 
     If Not FirstFourIndvFGC = FirstFourFGCList Then 
      MytxtboxFGC.ForeColor = System.Drawing.Color.Red 
      FGCConflict = True 
     Else 
      MytxtboxFGC.ForeColor = System.Drawing.Color.Green 
     End If 
     MytxtboxFGC.Text = FillerFGC 
     MytxtboxFGC.Visible = True 
     MytxtboxFGC.Height = 20 
     MytxtboxFGC.Width = 50 
     MytxtboxFGC.ScrollBars = ScrollBars.Horizontal 
     'PLISN 
     VertPT = New Point(1050, VertLocation) 
     Dim MytxtboxPLISN As TextBox = New TextBox 
     MytxtboxPLISN.Name = "txtPLISN" & i + 1 
     MytxtboxPLISN.Location = VertPT 
     MytxtboxPLISN.Text = FillerPLISN 
     MytxtboxPLISN.Visible = True 
     MytxtboxPLISN.Height = 20 
     MytxtboxPLISN.Width = 50 
     MytxtboxPLISN.ScrollBars = ScrollBars.Horizontal 
     'NHA PLISN 
     VertPT = New Point(1150, VertLocation) 
     Dim MytxtboxNHAPLISN As TextBox = New TextBox 
     MytxtboxNHAPLISN.Name = "txtNHAPLISN" & i + 1 
     MytxtboxNHAPLISN.Location = VertPT 
     MytxtboxNHAPLISN.Text = FillerNHAPLISN 
     MytxtboxNHAPLISN.Visible = True 
     MytxtboxNHAPLISN.Height = 20 
     MytxtboxNHAPLISN.Width = 50 
     MytxtboxNHAPLISN.ScrollBars = ScrollBars.Horizontal 
     'Add the controls and iterate VertLocation prior to starting the next RPSTL item 
     frmFigureViewer.p036text.Controls.Add(MytxtBoxItemNo) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxNSN) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxCAGE) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxTMIND) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxDesc) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxFGC) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxQTY) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxPartNum) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxUOC) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxSMR) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxPLISN) 
     frmFigureViewer.p036text.Controls.Add(MytxtboxNHAPLISN) 
     VertLocation = VertLocation + 30 
    Next 
    If FGCConflict = True Then 
     If chkFGCConflict.Checked = True Then 
      MsgBox("There is an FGC conflict within this figure. The ITEM FGC has been colored red for your convenience") 
     End If 
    End If 
    JpgFilePath = "" 
End Sub 

GÜNCELLEME: basamaklara alt program kodudur:

Option Explicit On 
Imports System.Runtime.InteropServices 

'--- Simple VB.Net wrapper for Ghostscript gsdll32.dll 

' (Tested using Visual Studio 2010 and Ghostscript 9.06) 
Module GhostscriptDllLib 
    Private Declare Function gsapi_new_instance Lib "gsdll32.dll" (ByRef instance As IntPtr, ByVal caller_handle As IntPtr) As Integer 
Private Declare Function gsapi_set_stdio Lib "gsdll32.dll" (ByVal instance As IntPtr, ByVal gsdll_stdin As StdIOCallBack, ByVal gsdll_stdout As StdIOCallBack, ByVal gsdll_stderr As StdIOCallBack) As Integer 
Private Declare Function gsapi_init_with_args Lib "gsdll32.dll" (ByVal instance As IntPtr, ByVal argc As Integer, <MarshalAs(UnmanagedType.LPArray, ArraySubType:=UnmanagedType.LPStr)> ByVal argv() As String) As Integer 
Private Declare Function gsapi_exit Lib "gsdll32.dll" (ByVal instance As IntPtr) As Integer 
Private Declare Sub gsapi_delete_instance Lib "gsdll32.dll" (ByVal instance As IntPtr) 

'--- Run Ghostscript with specified arguments 
Public Function RunGS(ByVal ParamArray Args() As String) As Boolean 

    Dim InstanceHndl As IntPtr 
    Dim NumArgs As Integer 
    Dim StdErrCallback As StdIOCallBack 
    Dim StdInCallback As StdIOCallBack 
    Dim StdOutCallback As StdIOCallBack 

    NumArgs = Args.Count 

    StdInCallback = AddressOf InOutErrCallBack 
    StdOutCallback = AddressOf InOutErrCallBack 
    StdErrCallback = AddressOf InOutErrCallBack 

    '--- Shift arguments to begin at index 1 (Ghostscript requirement) 

    ReDim Preserve Args(NumArgs) 
    System.Array.Copy(Args, 0, Args, 1, NumArgs) 

    '--- Start a new Ghostscript instance 

    If gsapi_new_instance(InstanceHndl, 0) <> 0 Then 
     Return False 
     Exit Function 
    End If 

    '--- Set up dummy callbacks 

    gsapi_set_stdio(InstanceHndl, StdInCallback, StdOutCallback, StdErrCallback) 

    '--- Run Ghostscript using specified arguments 

    gsapi_init_with_args(InstanceHndl, NumArgs + 1, Args) 

    '--- Exit Ghostscript 

    gsapi_exit(InstanceHndl) 

    '--- Delete instance 

    gsapi_delete_instance(InstanceHndl) 

    Return True 

End Function 

'--- Delegate function for callbacks 

Private Delegate Function StdIOCallBack(ByVal handle As IntPtr, _ 
    ByVal Strz As IntPtr, ByVal Bytes As Integer) As Integer 

'--- Dummy callback for standard input, standard output, and errors 

Private Function InOutErrCallBack(ByVal handle As IntPtr, _ 
    ByVal Strz As IntPtr, ByVal Bytes As Integer) As Integer 

    Return 0 

End Function 
End Module 
+0

Ben GhostScript hakkında hiçbir şey bilmiyorum, ama bu basamaklara benzeyen bir alt rutindir; Orada kullanılan her şeyi imha ediyor/kapıyor musunuz? Bir klasör izinleri sorunu olduğunda daha önce bu hatayı aldım, eğer doğru bir şekilde hatırlamıyorsam, öyle değil. Ayrıca, bazen "Kill", "File.Delete" den farklı davranır. İkisini de deneyebilirsiniz, bir fark olup olmadığını görün ... – Steve

+0

Ayrıca, bir yan not olarak, kullanabilirsiniz: TempTMIND = StrDup (CInt (Val (TMIND (ArrayLocation))), "*") yıldızları ayarlamak için. – Steve

+0

Ne yazık ki, ben de isterim gibi GhostScript ile aşina değilim. Bazı kodlara baktıktan sonra doğru bir şekilde uygulayabiliyordum, ama bu benim bu konudaki bilgimin kapsamı. RunGS alt yordamının kodunu bir anda yayınlayacağım. –

cevap

0

yüzden biraz daha araştırma yaptım ve sorun Ghostscript'te ile DEĞİL sonuca başardı. Uygulamamdaki PictureBox hala bellekte .jpg dosyasını tutuyordu. Garip bir şekilde, PictureBox.src dosyasını "Nothing" dosyasına bırakacak şekilde ayarlamayı düşündüm ama işe yaramadı. IDE (bir resim dosyası, Microsoft Visual Studio .NET veya Microsoft Visual Studio 2005 tümleşik geliştirme ortamı ile PictureBox denetimi yüklediğinizde https://support.microsoft.com/en-us/kb/309482

: Bazı çeşitli google arama yaptıktan sonra, ben burada bir çözüm ortaya çıkarmak başardı) dosyada bir kilit tutar. Bu, bir PictureBox denetiminin Görüntü özelliğini, tasarım zamanında el ile bir dosyaya veya çalışma zamanında FromFile yöntemini kullandığınızda oluşur.

Çözüm (neyse benim uygulama için):

Dim fs As System.IO.FileStream 
' Specify a valid picture file path on your computer. 
fs = New System.IO.FileStream(JpgFilePath, 
IO.FileMode.Open, IO.FileAccess.Read) 
frmFigureViewer.picMyJPEG.Image = System.Drawing.Image.FromStream(fs) 
fs.Close()