我在C#中創建Windows應用程序,我想在多個文件中寫入多個線程。我從不同端口獲取數據,並且每個端口都有一個文件關聯。是否有可能爲每個端口創建線程並一次又一次地使用相同的線程來寫入數據到相應的文件?假設我從端口10000,10001,10002獲取數據,並且有三個文件,分別爲10000.txt,10001.txt和10002.txt。我必須創建三個線程分別將數據寫入這三個文件,並且我想一次又一次地使用這些線程。是否有可能?如果可能,請給出一小段代碼示例?如何用多個線程寫入多個文件?
回答
如果你讓每個線程處理它自己的文件,它會做什麼?
因此,當創建端口讀取器線程時,您將打開屬於該端口的文件,並將該句柄存儲到該文件。當你接收數據,其寫入文件:
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);
}
}
}
然後像這樣啓動:
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();
}
理想情況下,你希望將文件從端口閱讀寫作分開,但我會爲了簡單起見,請留給你。
我不明白這是如何重用線程......你沒有循環。 – Tudor
我認爲OP不需要重用線程。那是什麼用途?你也可以在一個循環中沒有線程的情況下執行它。 – CodeCaster
是的,你可以,但是你需要使用select。如果線程很少,這是解決問題的直觀方法。 – 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. 多線程,讀取多個文件並寫入新文件
- 4. 使用多個線程寫入單個文件
- 5. 如何在多個線程中寫入文件
- 6. 如何使用多線程在python中一次更新/寫入多個文件?
- 7. Java從多個線程併發寫入單個文本文件?
- 8. 從ruby中的多個線程寫入單個文件
- 9. 多線程寫入文本文件
- 10. 從多個線程寫入文本文件?
- 11. 寫入多個文件
- 12. 寫入多個NCDF4文件
- 13. Log4Net從多個進程寫入文件
- 14. 在多線程中寫入文件
- 15. 線程安全多文件寫入
- 16. Java/Scala多線程文件寫入
- 17. 多線程文件寫入行爲
- 18. 多線程寫入字節[]到文件
- 19. 多個線程寫入陣列
- 20. 從多個線程寫入TraceListener
- 21. 如何使用python將多個輸入寫入文本文件?
- 22. 從多個線程寫入不同文件後獲取ferror()
- 23. java多線程(newCachedThreadPool),然後將結果寫入一個文件?
- 24. Java - 寫入同一文件的多個線程
- 25. 多線程寫入單個文件的最有效方法C
- 26. 多個線程可以同時將數據寫入文件嗎?
- 27. 讀取多個文件並寫入多個輸出文件
- 28. 多個RollingFileAppenders寫入同一個文件
- 29. 用Scrapy寫入多個文件
- 30. 如何在多線程概念的spring批處理中寫入單個文件
EXACT,字符重複的http://stackoverflow.com/q/8035029/331508,除標題。 –