2016-03-06 2 views
-1

J'apprécierais vraiment si quelqu'un pourrait m'aider avec ceci. Si je clique sur le bouton d'envoi, il ne peut pas télécharger le log.txt après ...Erreur aléatoire jeté sur le téléchargement d'un fichier

Imports System 
Imports System.IO 
Imports System.Collections 
Imports System.Security.Principal 
Imports System.Runtime.InteropServices 
Imports System.Net 

Public Class Form1 
Public sent As Boolean = False 
Private Declare Function SHChangeNotify Lib "Shell32.dll" (ByVal wEventID As Int32, _ 
                  ByVal uFlags As Int32, _ 
                  ByVal dwitem1 As Int32, _ 
                  ByVal deitem2 As Int32) As Int32 

Private Sub send_Click(sender As Object, e As EventArgs) Handles send.Click 
    'If a message has been sent 
    sent = True 
    Try 
     Dim writer As New System.IO.StreamWriter(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") 
     sent = False 
     writer.Write(input.Text) 
     Try 
      Dim ftp As FtpWebRequest = DirectCast(WebRequest.Create("ftp://***/c/log.txt"), FtpWebRequest) 
      ftp.Method = WebRequestMethods.Ftp.DeleteFile 
      Dim ftpResponse As FtpWebResponse = CType(ftp.GetResponse(), FtpWebResponse) 
      ftpResponse = ftp.GetResponse() 
      ftpResponse.Close() 
     Catch ex As Exception 

     End Try 
     My.Computer.Network.UploadFile(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt", New Uri("ftp://***/c/log.txt"), "user", "pass", False, 30000, FileIO.UICancelOption.DoNothing) 
     input.Text = "" 
    Catch ex As Exception 

    End Try 
    sent = False 
End Sub 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    If Not File.Exists(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c") Then 
     My.Computer.FileSystem.CreateDirectory(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c") 
    Else 
     My.Computer.FileSystem.DeleteDirectory(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c", FileIO.DeleteDirectoryOption.DeleteAllContents) 
     My.Computer.FileSystem.CreateDirectory(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c") 
    End If 
    firstcheck() 
    Threading.Thread.Sleep(500) 
End Sub 

Private Sub taskbarcheck_Tick(sender As Object, e As EventArgs) Handles taskbarcheck.Tick 
    If File.Exists(My.Computer.FileSystem.SpecialDirectories.Desktop & "\chax.txt") Then 
     Me.Opacity = 100 
     Me.Show() 
     Try 
      My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.Desktop & "\chax.txt") 
     Catch ex As Exception 

     End Try 
     Threading.Thread.Sleep(50) 
     SHChangeNotify(&H8000000, &H1000, 0, 0) 
    End If 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btn_hide.Click 
    Try 
     My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.Desktop & "\chax.txt") 
    Catch ex As Exception 

    End Try 
    Me.Opacity = 0 
    Me.Hide() 
    Threading.Thread.Sleep(50) 
    SHChangeNotify(&H8000000, &H1000, 0, 0) 
End Sub 

Private Sub ftpstuff_Tick(sender As Object, e As EventArgs) Handles ftpstuff.Tick 
    'Try 
    'delete file if exists 
    Try 
     My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") 
    Catch ex As Exception 

    End Try 
    'download file 
    Try 
     My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") 
    Catch ex As Exception 

    End Try 
    'My.Computer.Network.DownloadFile("http://***/c/log.txt", My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt", "", "", False, 30000, False) 
    Dim myWebClient As New WebClient() 
    If Not sent = True Then 
     myWebClient.DownloadFile("http://***/c/log.txt", My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") 
     log.Text = File.ReadAllText(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") 
    End If 
End Sub 

Private Sub firstcheck() 
    If Not File.Exists(My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt") Then 
     My.Computer.Network.DownloadFile(New Uri("ftp://***/c/log.txt"), My.Computer.FileSystem.SpecialDirectories.MyDocuments & "\c\log.txt", "user", "pass", False, 30000, True, FileIO.UICancelOption.DoNothing) 
    End If 
End Sub 

Je l'ai essayé tous les moyens que je connaissais ... La « Une exception non gérée du type « système .Net.WebException "s'est produite dans System.dll" est levée quand il essaie de télécharger le fichier après avoir cliqué sur le bouton d'envoi.

Merci pour votre aide à l'avance!

+0

Est-ce que le '' WebException' ont une InnerException'? – Rhumborl

+0

Je ne suis pas à la maison pour le moment, mais je vais jeter un coup d'oeil à mon retour. – paksyh15

+0

Il est dit dans l'information supplémentaire: "Une exception s'est produite lors d'une requête WebClient." Je ne peux pas l'obtenir pour écrire l'exception interne. Peut-être que je fais quelque chose de mal? http://pastebin.com/zxiJjFUH – paksyh15

Répondre

0

Oui, c'était le flux ne fermait pas. Merci!

0

Si vous obtenez une exception avant la fermeture du flux, le code passe directement au bloc catch et le flux n'est jamais fermé. Je suppose que le fichier est verrouillé jusqu'à la fin du programme.

Essayez d'ajouter une commande pour fermer le fichier dans le bloc Catch ainsi que dans votre Try bloc