0
我實現了一個連接多個客戶端的服務器。服務器讀取一個文本文件並將第一行發送到客戶端,等待6秒鐘併發送下一行,等等。現在我只想在點擊按鈕時發送一行。我怎麼做?c#每按一下按鈕一行一行讀取文件
在我的按鈕事件中,我把這個方法放在一個任務中,因爲服務器必須處理其他來自客戶端的連接請求。
服務器端:
private void SendFilesButton_Click(object sender, EventArgs e)
{
Task SendTask = Task.Factory.StartNew(() => SendFiles());
}
public void SendFiles()
{
try
{
tcpClient = tcpListener.AcceptTcpClient();
if (tcpClient.Connected)
{
using (StreamReader reader = new StreamReader("C:\\Users\\Chudnofsky\\Desktop\\Projekt\\Neu\\Messwerte.txt"))
{
lock (this)
{
string line;
for (int i = 1; i < 2400; i++)
{
line = reader.ReadLine() + Environment.NewLine;
stream = tcpClient.GetStream();
byte[] toSend = Encoding.ASCII.GetBytes(line);
stream.Write(toSend, 0, toSend.Length);
stream.Flush();
i++;
Thread.Sleep(6000);
}
}
}
}
}
catch (Exception)
{
System.Windows.Forms.MessageBox.Show("Datei konnte nicht gelesen werden!");
}
}
或結合這兩種方法'線= File.ReadLines( 「C:\\ Messwerte.txt」)ElementAtOrDefauld(nextLine ++);對於第n行' – Slai
掃描文件每次有點昂貴。對於OP案例可能很小的文件來說可能是很好的。爲了很好的代碼,人們會寫一些異步迭代器。 –
是的,我同意,第一種方法已經考慮到了性能。 –