2013-04-01 3 views
1

코드 막대를 읽고 텍스트 파일에 읽기 코드를 작성해야하는 프로그램이 있습니다. 30 초마다 일부 작업을 수행하고 이미 처리 된 행을 삭제하기 위해 해당 파일을 읽는 스레드가 시작됩니다.VB.NET을 사용하여 동시에 텍스트 파일을 읽고 쓰십시오.

내 문제는 내가 주 스레드에서 파일을 읽는 동안 더 많은 행을 쓸 수 있고 나중에 매 30 초마다 실행되는 스레드에 대해 읽을 수 있어야한다는 것입니다.

나는 정말로 어떤 문제의 접근 방법에 대한 샘플이나 아이디어를 찾지 못했습니다. 해결책이 있습니까?

답변

1

작업을 수행하는 데 백업 저장소로 파일을 사용하는 대신 "라이브"데이터에 Queue을 사용하는 것이 어떻습니까? 파일을 로그로 사용하여 작업 기록을 다시 참조해야 할 경우에 대비하여 항목이 대기열에서 제거되고 제거되는 항목을 입력 할 수 있습니다. 이런 식으로 파일은 어떤 종류의 롤백이 필요하지 않으면, 예를 들어 프로그램이 부적절한 순간에 중지 된 경우를 제외하고는 파일을 추가하거나 읽을 필요가 없습니다.

+0

원래 솔루션입니다. 매우 유용 할 수 있습니다. –

1

이 파일과 같은 공유 가변 리소스가 있고이 파일에 액세스하는 여러 유닛이있는 경우 일반적으로 잠금을 사용합니다. 잠금은 프로그램 내에 존재할 수 있지만 많은 파일 시스템에서도 제공됩니다. 파일에 액세스해야 할 때 파일을 잠그고 더 이상 필요하지 않을 때 잠금을 해제하십시오. 그렇게하면 프로그램의 한 부분 만이 주어진 시점에 파일에 액세스하게됩니다.

+0

Marcus가 맞습니다. 동시에 여러 리소스에 액세스하는 것이 좋지 않습니다. 한 번에 하나의 스레드 만 액세스 할 수있는 잠금을 사용하면 PC가 해당 스레드를 닫은 다음 매우 빠르게 쓸 수 있습니다. – Brandon

+0

파일 잠금은 첫 번째 아이디어 였지만 주 스레드가 파일보다 우선해야한다는 것을 알게되었습니다. 만약 내가 잘못 아니에요, 내가 하나의 스레드에 의해 파일을 잠그면 다른 사람이 그것에 액세스 할 수없는 첫 번째 때까지, 그 일이 없을 때, 메인 스레드가 할 수 있어야 파일을 필요로 할 때까지 그것을 액세스 –

관련 문제