2013-03-21 2 views
0

응용 프로그램에서 C : // 루트 폴더를 사용하고 있습니다. 이 폴더에는 이미지가 들어 있습니다. 이 이미지는 Picturebox에서 읽습니다.다른 프로세스에서 파일을 읽는 동안 파일 읽기

  1. 이미지는 Linux 머신에서 FTP를 통해 전송됩니다. 리눅스 머신은 ftp를 사용하여 윈도우에있는 C : // root를 엽니 다. IMAGE_1.jpg를 저장하십시오.
  2. IMAGE_1.jpg는 C# windows 폼 응용 프로그램에서 읽어 와서 그림 상자에 표시합니다.

이미지는 Linux 머신에서 10 초마다 전송됩니다. Windows에서이 이미지를 스레드에 표시합니다.

때때로 Linux 또는 Windows에서 예외가 발생합니다. 그들 중 한 사람이 이미지를 읽으려고 할 때 (창), 다른 사람이 이미지를 저장하려고 시도하는 동안 (리눅스)

따라서 Image_1.jpg가 Linux 컴퓨터에서 사용되는 경우, 승리 형태로 이미지를 보여줍니다.

하지만 어떻게?

+0

Linux 컴퓨터에서 응용 프로그램/스크립트를 수정할 수 있습니까? – azhrei

+0

아니요, 리눅스 머신이 클라이언트이고, 윈도우즈가 서버입니다. 어플리케이션에서, 이것은 윈도우에 있어야합니다. –

+0

"매 10 초마다"란 무엇을 의미합니까? 리눅스 머신 ftp는 한 번에 한 파일 씩 파일 업로드를 마친 후 새 파일을 업로드하기 전에 최소 10 초 동안 대기합니까? – azhrei

답변

1

Win Forms 응용 프로그램에서 파일을 열어서 읽고 다른 프로세스와 공유하여 파일을 계속 읽고 쓸 수있게하십시오.

이렇게하려면 File.Open Method (String, FileMode, FileAccess, FileShare)을 사용하십시오.

File.Open Method (String, FileMode) 또는 File.Open Method (String, FileMode, FileAccess)을 사용하면 파일이 공유되지 않습니다.

공유하면 사물의 ftp 측면을 행복하게 유지해야합니다.

Windows에서 파일을 여는 중에 예외가 발생하면 괜찮습니다. 예외를 잡아서 곧 다시 시도하십시오.

파일을 성공적으로 열었을 때 마지막 두 바이트가 FF D9인지 확인하십시오. 이 경우 귀하의 JPG 업로드가 완료되었습니다.

여기에 몇 가지 의사 코드가 있습니다.


    success = false 
    using (FileStream fs = File.Open(path, // eg your Image1.jpg 
            FileMode.Open, 
            FileAccess.Read, // we just need to read 
            FileShare.ReadWrite)) // important to share! 
    { 
     // if last two bytes are FF D9 then 
     // success = true... can display image now 
    } 
    if (!success) 
    { 
     // file is being uploaded, or some other problem occurred 
     // try again later 
    } 

+0

친애하는 azhrei, 나는 내 질문을하기 전에 그냥하고있다 : using (FileStream ImgFileStream = new FileStream (Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { RefImg = Image.FromStream (ImgFileStream); 그러나 여전히 FTP 측에서 오류가 발생합니다. –

+0

ok - 나에게 약간의 문제가있을 수 있습니다. FTP 측에서 어떤 오류가 발생했는지 설명하지 않으시겠습니까? – azhrei

+0

친애하는 azhrei 및 Maxime Vernier에게 알고리즘을 변경하고 스레드를 변경하며 fileaccess 및 fileshare에 대한 제안을 사용하여이 문제를 해결했습니다. 고마워. –

관련 문제