【发布时间】:2013-04-15 10:40:16
【问题描述】:
我正在使用System.Threading.Timer 创建一个计时器,该计时器将字符串打印到串行端口,然后每秒从另一个串行端口读取。我试图通过向我的TimerCallback 函数发送参数来做到这一点。下面是我初始化计时器的代码和回调函数的代码。
初始化:
TimerCallback tcb = Timer_func(buff_out, send_port, recv_port);
AutoResetEvent autoEvent = new AutoResetEvent(false);
Timer aTimer = new Timer(tcb,autoEvent,1000,1000);
回调函数:
public static TimerCallback Timer_func(string buff_out, SerialPort send_port, SerialPort recv_port)
{
string buff_in;
send_port.WriteLine(buff_out);
buff_in = recv_port.ReadLine();
Console.WriteLine(buff_in);
}
初始化发生在 Main() 函数中,并且两个函数在同一个类中。
当我按原样编译代码时,收到错误 CS0161:“并非所有代码路径都返回值”。为了解决这个问题,我在该函数的末尾添加了return 1;,但随后收到错误 CS0029:“无法将类型 'int' 显式转换为 'System.Threading.Timer'。
我做错了什么,我该如何解决。 (C# 新手)。提前谢谢!
【问题讨论】:
-
你对这段代码很迷茫。在任何情况下,您都无法使用 Timer 使其可靠。您在其他地方有一些设置 buff_out 的代码。让该代码也调用 SerialPort.WriteLine() + ReadLine()。
标签: c# multithreading timer callback return