告诉构造函数我正在使用task而不告诉是哪个方法
本文关键字:方法 构造函数 task | 更新日期: 2023-09-27 18:06:10
我想在构造函数中定义一个任务(或线程),但是在button-event中使用它的方法启动任务(或线程)。
所以我想这样写:
Task SendTask = Task.Factory.StartNew(());
private void SendFilesButton_Click(object sender, EventArgs e)
{
SendTask.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;
line = reader.ReadLine() + Environment.NewLine;
stream = tcpClient.GetStream();
byte[] toSend = Encoding.ASCII.GetBytes(line);
stream.Write(toSend, 0, toSend.Length);
stream.Flush();
}
}
}
}
catch (Exception)
{
System.Windows.Forms.MessageBox.Show("Datei konnte nicht gelesen werden!");
}
}
您可以像这样使用构造函数:
Task SendTask = new Task(new Action(SendFile));
和在事件处理程序中简单地启动它,检查它的状态:
private void SendFilesButton_Click(object sender, EventArgs e)
{
if (SendTask.Status == TaskStatus.Created)
{
SendTask.Start();
SendFilesButton.Enabled = false;
}
}
你应该避免lock (this)
结构,因为它会锁定你的UI表单。