ファイルをローカルコンピュータからネットワークデバイスにコピーしようとしています。私は、ファイルコピーのために働いてプログレスバーを取得しようとしている、そしてそれはなしサブディレクトリに単一ディレクトリのために働いてしまった:サブディレクトリの進行状況バーにFilewatcherを使用すると、正しく更新されない
Private Sub CopyPictures()
Try
If Not Directory.Exists(DestinationPath) Then
My.Computer.FileSystem.CreateDirectory(DestinationPath)
End If
Dim counterLocalFiles = My.Computer.FileSystem.GetFiles(SourcePath)
UpdateProgressBarMaximum1(CInt(counterLocalFiles.Count))
UpdateLabelText2(CStr(counterLocalFiles.Count)) 'is a label which shows copied X files of Label2 Files
fsw1 = New IO.FileSystemWatcher(DestinationPath)
fsw1.EnableRaisingEvents = True
My.Computer.FileSystem.CopyDirectory(SourcePath, DestinationPath)
GetSettingsFromFile()
Catch Exec As System.IO.IOException
Dim dr As DialogResult = MessageBox.Show("Some Random Error Code", "Exception Title", MessageBoxButtons.OKCancel)
If (Not DialogResult.OK = dr) Then
Exit Sub
Return
End If
End Try
End Sub
Private Sub fsw1_Created(sender As Object, e As FileSystemEventArgs) Handles fsw1.Created
Dim counterRemoteFiles = My.Computer.FileSystem.GetFiles(DestinationPath)
UpdateProgressBar1(CInt(counterRemoteFiles.Count))
UpdateLabelText1(CStr(counterRemoteFiles.Count))
End Sub
更新ObjectX潜水CopyPicturesはBackgroundWorkerので提起されているので、単に関数を呼び出しをしています同様に、このコードは私のために完全に正常に動作
Private Sub UpdateProgressBar1(Value As Int32)
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New Action(Of Integer)(AddressOf UpdateProgressBar1), Value)
Else
'We are on the UI thread so update the control.
ProgressBar1.Value = Value
End If
End Sub
例えば、この1のように、すべてを見て、私はそう私はそれらを事前カント画像を含むサブディレクトリ、および潜水艦の名前に対処する必要がランダムであります私はわずかな変更を思いついた:
カウンタはこのように今探しています:
Dim counterLocalFiles = System.IO.Directory.GetFiles(SourcePath, "*.jpg*", SearchOption.AllDirectories).Length
UpdateProgressBarMaximum1(CInt(counterLocalFiles))
UpdateLabelText2(CStr(counterLocalFiles))
そして、この:
Dim counterRemoteFiles = IO.Directory.GetFiles(DestinationPath, "*.jpg", SearchOption.AllDirectories).Length
UpdateProgressBar1(CInt(counterRemoteFiles))
UpdateLabelText1(CStr(counterRemoteFiles))
そして、私が追加:
fsw1.IncludeSubdirectories = True
今すぐweired問題が開始しました:これは、ファイルを正しくカウントしますソースディレクトリのlabel2をすべてのサブディレクトリ内の正しいファイル量に設定し、コピーを開始します。リアルタイムではProgressbarは更新されません。それは最初のディレクトリで完了したときにそれを一度更新し、それに含まれるファイルの量を追加するだけでした。その後、それは完全に停止して2番目のディレクトリを特定し、それをプログレスバーに全く追加しませんでした。私はここで間違って何をしていますか?私は私の英語がうまくいくことを願っています。何か質問がある場合、または私が十分に明確でない場合は、私に知らせてください。ありがとう
しかし、私はサブディレクトリなしでコードを使用すると、それは正常に正常に動作しますか?これは完全に同じように動作しますが、サブディレクトリをカウンターのための控除にすることはありません。 – Alex
私はあなたの変数を見ることができるラインごとのデバッグを提案します...これは非常に役立つでしょう。 VSで作業している場合は、右クリックしてコード内にブレークポイントを設定し、「デバッグを開始」モードでコードを実行すると、ブレークポイントで実行を停止し、そこからステップできるようになります。 F10)、コードにステップインします(F11)。踏み越えながら、変数やオブジェクトを浮かべて、その値や状態を見ることができます。 varsを右クリックし、デバッグモードで表示するために「監視」アイテムとして追加することができます。 – DukeDidntNukeEm
そして、私は// foo/barにある設定ファイルの変更を監視するために、プログラムのどこか他の場所にsystemfilewatcherを使用しています。私はVBで初めてです。ネットでは、私は何かfundamerlyここで間違っているかもしれないが、私はそれを参照してください。 – Alex