1

安らかなWCFサービスを作成しました。クライアントがこのサービスメソッドを呼び出すたびに、以下のような特定の間隔でタイマーを開始しました

var timer = new Timer();
timer.Interval = Convert.ToInt32(attempt);
timer.Tick += new EventHandler(timer_Tick);
var tempAttempt = new TempAttempt
{
    AlertInformationId = currentAlertId,
    Attempt = GetAttemptId(attempt),
    Status = false,
    TimerId = "Timer" + currentAlertId.ToString()
};

if (CreateNewAttempt(tempAttempt))
{
    timer.Tag = tempAttempt.TimerId;
    timer.Enabled = true;
    timer.Start();
}

private void timer_Tick(object sender, EventArgs e)
{
    //blah blah          
    Timer t = (Timer)sender;
}

タイマーを開始した後、その特定の間隔の後にティックが発生しません。これを解決するにはどうすればよいですか?

私のサービス

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "/PushNotification")]
[OperationContract]
void PushNotification(MailInformation mailInformations);
4

2 に答える 2

2

System.Windows.Forms.Timer は、サービスの不適切なクラスです。

代わりに System.Threading.Timer を試してください。

于 2013-05-09T15:19:17.630 に答える
0

このリンクからTimer Class

この Windows タイマーは、UI スレッドを使用して処理を実行するシングルスレッド環境向けに設計されています。ユーザー コードで UI メッセージ ポンプを使用できるようにし、常に同じスレッドから操作するか、呼び出しを別のスレッドにマーシャリングする必要があります。

この場合は使用できないことを意味し、機能しませんSystem.Windows.Forms.Timer

于 2013-05-09T16:41:49.730 に答える