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# の新機能)。前もって感謝します!