2014-04-07 1 views
0

누구든지 도와 줄 수 있습니까? 계속 오류가 발생했습니다 File beeing used by another process. 여기 Username.omg 파일에 액세스 할 수 없습니다. 다른 프로세스에서 사용 중이기 때문에

지금까지 내 코드입니다 :

string username = textBox1.Text; 
string password = textBox2.Text; 
string SecurityCode = textBox3.Text; 
if(!Directory.Exists(path + "\\Login")) 
     Directory.CreateDirectory(path + "\\Login"); 
if (!File.Exists(path + "\\Login\\Username.omg" + "\\Login\\Password.omg" + "\\Login\\SecurityCode.omg")) 
    File.Create(path + "\\Login\\Username.omg"); 
    File.Create(path + "\\Login\\Password.omg"); 
    File.Create(path + "\\Login\\SecurityCode.omg"); 

    File.AppendAllText(path + "\\Login\\Username.omg", username); 
    File.AppendAllText(path + "\\Login\\Password.omg", password); 
    File.AppendAllText(path + "\\Login\\SecurityCode.omg", SecurityCode); 
    MessageBox.Show("User Created: Welcome: " + username); 
} 
+2

File.Create() 호출을 삭제하십시오. 대신 File.WriteAllText()를 사용하십시오. –

답변

2

File.Create은 그냥 File.Create 주위

using(File.Create(path + "\\Login\\Username.omg")) 
     ; 
    using(File.Create(path + "\\Login\\Password.omg")) 
     ; 
    using(File.Create(path + "\\Login\\SecurityCode.omg")) 
     ; 

간단한 사용하여 문을 만든 파일에 액세스하기 전에 닫아야합니다 스트림을 반환 호출은 반환 된 스트림을 닫고 처리하는 데 도움이 될 수 있습니다. Mr Hans Passant에서 위의 설명에 언급 된 것처럼 간단한 시나리오 File.WriteAllText에 간단한 호출에 의해 더 나은 서비스 될 수있다()가 존재하고있는 경우 그 내용을 덮어하지 않는 경우

File.WriteAllText(Path.Combine(path, @"login\username.omg"), username); 

File.WriteAllText 파일을 만듭니다. 대신 코드에서 정보를 동일한 파일에 반복해서 추가합니다. 나는 이것이 당신이 여기서 정말로 원하는 것인지 확신하지 못합니다.

그런데 File.Exists에 대한 호출이 잘못되었습니다. 각 파일을 개별적으로 테스트해야합니다.

string userNameFile = Path.Combine(path, @"login\username.omg"); 
if (!File.Exists(userNameFile) 
{ 
    using(File.Create(userNameFile)) 
     ; 
} 
+0

답장을 보내 주셔서 고맙습니다. 고맙습니다. :) – user3506486

+0

정답을 표시해주세요. 그것은 다른 사람들을 도울 수 있습니다. –

관련 문제