C#에서 여러 스레드로 여러 파일을 쓰고 싶습니다. 여러 포트에서 데이터를 가져 오는 중입니다. 모든 포트와 관련된 파일이 하나 있습니다. 모든 포트에 대한 스레드 생성이 가능합니다. 각각의 파일에 데이터를 쓰는 데 동일한 스레드를 반복해서 사용합니까? 내가 포트 100001000110002에서 데이터를 가져 오는 중이며 10000.txt, 10001.txt 및 10002.txt와 같은 세 개의 파일이 있다고 가정합니다. 이 세 파일 각각에 데이터를 쓰는 데 쓰레드 세 개를 만들어야하고이 쓰레드를 반복해서 사용하고 싶습니다. 가능합니까? 가능한 경우 작은 샘플 코드를 제공 할 수 있습니까?여러 스레드로 여러 파일을 작성하는 방법은 무엇입니까?
답변
각 스레드가 자체 파일을 처리하도록하면 어떻게됩니까?
그래서 포트 판독기 스레드가 만들어지면 해당 포트에 속한 파일을 열고 해당 파일에 핸들을 저장합니다. 당신이 데이터를 수신 할 때마다, 당신은 파일에 기록 :
List<PortReader> readerList = new List<PortReader>();
readerList.Add(new PortReader(10000));
readerList.Add(new PortReader(10001));
readerList.Add(new PortReader(10002));
// etc...
foreach (PortReader reader in readerList)
{
new Thread(new ThreadStart(reader.StartReading)).Start();
}
가 이상적으로 당신은 포트 읽기에서 쓰기 파일을 분리 할,하지만 난거야 : 다음
class PortReader
{
StreamWriter _writer;
int _port;
YourPort _myPort;
public PortReader(int port)
{
// Do your port initialization stuff
_writer = new StreamWriter(port + ".txt");
}
private void DataReceived(String data)
{
_writer.WriteLine(data);
}
public void StartReading()
{
while (_myPort.Connected)
{
// Do your port reading stuff
String data = _myPort.ReadData();
// Do some processing with the data
// And now let it be written to the file
DataReceived(data);
}
}
}
과 같은처럼 시작 단순함을 위해 그것을 당신에게 맡깁니다.
어떻게이 스레드를 재사용하는지 모르겠다. 루프가 없다. – Tudor
OP는 스레드를 재사용 할 필요가 없다고 생각합니다. 그리고 그것은 무엇을 사용합니까? 단일 루프에서 쓰레드없이 실행할 수도 있습니다. – CodeCaster
그래,하지만 당신은 선택을 사용해야 할 수 있습니다. 스레드가 거의 없다면 문제를 해결하는 직관적 인 방법입니다. – Tudor
var ports = new List<int> { 1000, 1001, 1002 };
Parallel.ForEach(ports, p =>
{
var data = GetDataForPort(p);
var path = string.Format(@"C:\{0}.txt", p);
using (var writer = new StreamWriter(path))
writer.Write(data);
});
- 1. 여러 스레드로 단일 파일을 작성하는 방법은 무엇입니까?
- 2. 여러 스레드로 파일을 다운로드하는 방법
- 3. WinInet을 여러 스레드로 올바르게 연결하는 방법은 무엇입니까?
- 4. 여러 스레드로 ffmpeg 실행
- 5. Zend_Config_Writer_Xml을 사용하여 여러 항목을 작성하는 방법은 무엇입니까?
- 6. 하나의 NSData 객체에서 여러 파일을 작성하는 방법은 무엇입니까?
- 7. 쿼리 결과에서 SQL로 여러 파일을 작성하는 방법은 무엇입니까?
- 8. 여러 유형을 허용하는 함수를 작성하는 방법은 무엇입니까?
- 9. 여러 사용 지침을 작성하는 방법은 무엇입니까?
- 10. 여러 키에서 캐시 키를 작성하는 방법은 무엇입니까?
- 11. 여러 요소로 확장되는 템플릿을 작성하는 방법은 무엇입니까?
- 12. 여러 파일을 업로드하는 방법은 무엇입니까?
- 13. 런타임에 함수를 수정 한 다음 여러 스레드로 전파하는 방법은 무엇입니까?
- 14. 여러 다른 파일을 처리하는 좋은 방법은 무엇입니까?
- 15. 파일을 통해 루핑을 여러 스레드로 분할 할 수 있습니까?
- 16. 파일을 작성하는 가장 효율적인 방법은 무엇입니까?
- 17. MacVim의 여러 원격 서버에서 여러 파일을 편집하는 방법은 무엇입니까?
- 18. 버트 보고서 속성 파일을 작성하는 방법은 무엇입니까?
- 19. 최대 절전 모드로 여러 스레드로 여러 엔터티 저장
- 20. 여러 도메인에 동일한 하위 도메인의 가상 호스트를 작성하는 방법은 무엇입니까?
- 21. 디렉토리에서 여러 유형의 파일을 찾는 방법은 무엇입니까?
- 22. 여러 패치 파일을 병합하는 방법은 무엇입니까?
- 23. BlobStore에 여러 파일을 업로드하는 방법은 무엇입니까?
- 24. 텍스트 파일을 여러 파일로 분할하는 방법은 무엇입니까?
- 25. VoiceXML이있는 폴더에서 여러 파일을 재생하는 방법은 무엇입니까?
- 26. IE 탐색기에서 여러 파일을 선택하는 방법은 무엇입니까?
- 27. xquery의 폴더에 여러 파일을 업로드하는 방법은 무엇입니까?
- 28. 여러 파일을 처리하는 가장 완고한 방법은 무엇입니까
- 29. SHFILEOPSTRUCT를 사용하여 여러 파일을 이동하는 방법은 무엇입니까?
- 30. 파일을 여러 클라이언트에 효율적으로 배포하는 방법은 무엇입니까?
제목 이외의 문자는 http://stackoverflow.com/q/8035029/331508의 char 사본입니다. –