I've got a problem wich cant manage to overcome although it might seem fairly simple. I've got a chat program, in wich i want to enable users to change user pics at runtime. There's a picture box winch is set to an image with the name of a certain peer for example : "C:\\FriendLy\\ Users\\eran\\Pi ctures\\eva.jpg "
Now what i need is to replace this picture and override it. The first thing i do is copy it to a new location (becuase i dont want to loose it)
1) i find if theres a picture for the user "eva" in the designated path .
2) if found i copy it to a diffrent locaition , i dont use File.Move for the same reason i post this problem (the same System.IO.Excep tion) claming that it is in use
altho i made sure to remove it from any other user before attempting to move it .
4) now i try to copy the new file and override the old "eva.jpg" file , i choose a file using OpenFileDiaglog and copy it to the designated user pictures path destination
with override set to true , at this point i get the same System.IO.Excep tion claming that it is in use some by anouther process ( IT AINT! ..as far as i can tell )
..it wont let me delete it for the same reason...
The process cannot access the file 'C:\FriendLy\Us ers\eran\Pictur es\eva.jpg' because it is being used by another process.
if any one can think of the reason or knows how i can check what process holds the file,it would be most helpfull
Now what i need is to replace this picture and override it. The first thing i do is copy it to a new location (becuase i dont want to loose it)
1) i find if theres a picture for the user "eva" in the designated path .
Code:
String[] files = Directory.GetFiles(user_pic_path); if (files.Count<String>() > 0) { FileInfo _info = new FileInfo(files[0]); bool found = false; foreach (String _file in files) { _info = new FileInfo(_file); if (_info.Name.Equals(_peer_name + _info.Extension)) { found = true; _fpath = _info.FullName; break; } }
altho i made sure to remove it from any other user before attempting to move it .
Code:
PeerContents updated_contents = getPeerContents(_peer_name); ; updated_contents.img = null; picbox_peer.Image = null; 3) as i was saying if it was found it gets copied to a new location if (found) { String files_path = Path.Combine(received_files_path, _info.Name); overrideOk = false; int i = 0; String ext = _info.Extension; String nm = _info.Name; _info = null; while (!overrideOk) { try { File.Copy(_fpath,files_path,false); overrideOk = true; } catch (Exception es) { i++; String f_name = nm.Substring(0,nm.Length - ext.Length); files_path = Path.Combine(received_files_path, f_name + "(" + i + ")" + ext); } } }
with override set to true , at this point i get the same System.IO.Excep tion claming that it is in use some by anouther process ( IT AINT! ..as far as i can tell )
..it wont let me delete it for the same reason...
Code:
String fileName = openFileDialog1.FileName; FileInfo new_info = new FileInfo(fileName); new_path = Path.Combine(user_pic_path,_peer_name + new_info.Extension); overrideOk = false; while (!overrideOk) { try { File.Copy(fileName, new_path, true); overrideOk = true; } catch (Exception es) { File.Delete(new_path); } }
if any one can think of the reason or knows how i can check what process holds the file,it would be most helpfull
Comment