我有一个使用异步套接字的客户端/服务器应用程序。我的问题是无法从服务器端启动客户端的定时器控制。我有一个从服务器端向客户端发送数据的方法,客户端得到了一个方法处理这些数据并启动计时器。获取数据并处理它没有问题。但计时器控制不起作用。我在客户端有一个按钮,启动计时器的代码相同。所以它如果此命令来自server.Whats问题??
,在客户端使用按钮但不工作这是我的代码;
void MessageSend(string msj)
{
foreach (Client _client in connectedCompList)
{
//for sending data from server side to client side
_client.clientSoket.Send(ConvertByteArray(msj));
}
}
private void btnStartExam_Click(object sender, EventArgs e)
{
MessageSend("/t/" + "," + txtMinute.Text + "," + txtSecond.Text+",");
}
void MessageControl(string message)
{
if (message.Length < 1)
return;
switch (message.Substring(0, 3))
{
case "/e/":
txtAdayNo.Text = "";
txtVeri.Text = "";
txtAdSoyad.Text = "";
txtSinav.Text = "";
break;
case "/t/":
// starting exam after separate min and sec.
string[] time = message.Split(',');
minute = Convert.ToInt32(time[1]);
second = Convert.ToInt32(time[2]);
timer.Enabled = true;
timer.Start();
break;
default:
break;
}
private void btnTest_Click(object sender, EventArgs e)
{
// working with this event.
timer.Enabled = true;
timer.Start();
}
答案 0 :(得分:0)
如果计时器是Windows.Forms.Timer
,则需要调用Control.Invoke
来编组设置计时器属性的调用,并在UI线程上重新启动计时器。
您还应该对所有文本框和其他UI元素执行此操作。我怀疑这是你的问题,因为套接字通信通常发生在ThreadPool线程而不是主(UI)线程上。