Advertisement

04.07.2008 at 06:53AM PDT, ID: 23301304
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

Problem deleting a file (being used by another process)??

Tags: vb.net
Hi,

I have a windows service app that uses a filesystemwatcher.  When a file gets created in a particular directory that I am watching it checks whether the file needs to be processed (by a db check).  If there is no actions to be taken,  the file gets deleted.

I have been pasting the file into the directory to check that it works.  When I attach to the process and debug everything works fine and the file gets deleted every time.  Which is what I want.  However when I am not debugging the file gets deleted the first time but when I paste the file in again I get the following error:

System.io.IOException - {"The process cannot access the file 'C:\test\test1.asf' because it is being used by another process."}

Any ideas why this is happening?  Here is my code:

Private Sub ActionFile(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
        If e.ChangeType = WatcherChangeTypes.Created Then
            'If a new file has been created then action the file by moving it to the correct directory
            'Check that the file is an asf file
            If e.Name.Contains(".asf") Then

                'Get the directory structure for the new file so that we can move it to the correct place
                Dim strDir As String = GetDirStructure("test")
                If strDir <> "" Then

                    If Not Directory.Exists(strDir) Then
                        Directory.CreateDirectory(strDir)
                    End If

                    File.Move(e.FullPath, strDir & "\" & e.Name)
                Else 'A directory for this file has not been created so delete the capture
                    File.Delete(e.FullPath)

                End If

            End If

        End If
    End Sub
Start your free trial to view this solution
Question Stats
Zone: Programming
Question Asked By: fizzer666
Solution Provided By: nsanga
Participating Experts: 3
Solution Grade: A
Views: 252
Translate:
Loading Advertisement...
04.07.2008 at 07:33AM PDT, ID: 21297268

Rank: Genius

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.07.2008 at 07:40AM PDT, ID: 21297334

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.07.2008 at 08:13AM PDT, ID: 21297690

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.07.2008 at 08:20AM PDT, ID: 21297761

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.07.2008 at 08:37AM PDT, ID: 21297936

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.07.2008 at 04:00PM PDT, ID: 21301250

Rank: Sage

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
04.08.2008 at 06:43AM PDT, ID: 21305125

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • Automotive
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Displays / Monitors
  • Handhelds / PDAs
  • Components
  • Peripherals
  • Laptops/Notebooks
  • Servers
  • Misc
  • Apple
  • Embedded Hardware
  • Networking Hardware
  • Storage
  • Desktops
  • New Users
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMware
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Virtualization
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • Web Computing
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Consulting
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMware
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Automation
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Web Services
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Web Computing
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Lounge
  • Business Travel
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
  • Automotive
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
04.07.2008 at 07:33AM PDT, ID: 21297268

Rank: Genius

The usual approach is to check the file length.  An entry in the File Access Table gets created with a 0 length, and the FileSystemWatcher picks that up, and tries to process the file, even though it isn't fully written.

Bob
Assisted Solution
 
04.07.2008 at 07:40AM PDT, ID: 21297334
you are not waiting until the previous process has done its job with the file ( i.e transfer of file )

the steps that take place when you copy paste your file.....

1) a new file is created
2) the content is transfered to the new file from old file


the problem i think is your processing starts after (1) and before (2) and so the file is still in use.....
Accepted Solution
 
04.07.2008 at 08:13AM PDT, ID: 21297690
Ok,

I'm not copying the file from the dir that I am pasting to.  I'm pasting the same file from the desktop every time so I don't think this is where I am going wrong nsanga.

I tried this, as your suggestion TheLearnedOne:

Dim fi As FileInfo = New FileInfo(e.FullPath)
                        If fi.Length > 0 Then
                            File.Delete(e.FullPath)
                        End If

The problem is here that The file never gets deleted because it only runs once and the length does equal 0 as you said.  So how do I hold on this code untill the file is fully written?
 
04.07.2008 at 08:20AM PDT, ID: 21297761
you can check whether you have a write access to the file in a loop and sleep if you don't have access as below

while (has access to write)

     'do your processing
     ' and delete the file


end while
 
04.07.2008 at 08:37AM PDT, ID: 21297936
something like this......

Do
                Threading.Thread.CurrentThread.Sleep(1000)
                Dim lobjFile As New IO.FileStream("", IO.FileMode.Append, IO.FileAccess.Write,    IO.FileShare.Write)
            Loop While lobjFile Is Nothing
 
04.07.2008 at 04:00PM PDT, ID: 21301250

Rank: Sage

Try this, it may solve your problem:

                  File.Delete(e.FullPath)
                  GC.Collect()    '< force Garbage Collection

 
04.08.2008 at 06:43AM PDT, ID: 21305125
Thanks for all the help.  It seems to work now with the following code.  Unless anyone can see anything wrong with the following:

   Dim fStream As IO.FileStream = Nothing
                    Dim fiFile As FileInfo = New FileInfo(e.FullPath)

                    Do
                        Threading.Thread.Sleep(1000)
                        Try
                            fStream = fiFile.Open(FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write)
                        Catch ex As IOException

                        Catch ex As Exception

                        End Try


                        If fStream IsNot Nothing Then
                            fStream.Dispose()


                            File.Delete(e.FullPath)
                            GC.Collect()
                        End If

                    Loop While fStream Is Nothing
 
 
04.08.2008 at 07:38AM PDT, ID: 21305675

Ok, I'm not sure I'm seeing this here fizzer666 - From your post above you used the code from my post
(ID: 21301250) to help solve your problem, but didn't accept it?  Looks like your solution includes code
from nsanga's post (ID: 21297334), and mine...



 
 
04.08.2008 at 08:11AM PDT, ID: 21306037
Ok sorry VBRocks.  I did include your code in the code that I responded with but the code also works without your line of code and it wasn't really the solution to the original post.  The problem was, as TheLearnedOne quite rightly pointed out that the file gets created with a 0 length.  And nsanga's response helped me fix the issue of looping until the file was fully written.

 
 
04.08.2008 at 08:45AM PDT, ID: 21306389

Ok.  Thank yoiu for the explanation.  I appreciate that.

 
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628