2

15分ごとに「google」にpingを実行するC#でプログラムを作成しています。ping が成功すると、15 分後に再度チェック (ping) が行われます。ping が失敗すると、ISP のダイラーが実行され、15 分ごとに再度チェックされます。

すべてのコードを書きましたが、15 分ごとにコードを繰り返すようにタイマーを設定できないようです。誰かが私を助けてくれれば、本当に感謝しています。

これがコードです。

using System;
using System.Windows.Forms;
using System.Net.NetworkInformation;
using System.Net;
using System.Diagnostics;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        timer.Interval = (4000); //For checking, I have set the interval to 4 sec. It actually needs to be 15 minutes.
        timer.Enabled = true; 
        timer.Start(); 

        Ping ping = new Ping();

        PingReply pingStatus = ping.Send(IPAddress.Parse("208.69.34.231"));

        if (pingStatus.Status != IPStatus.Success)
        {
            timer.Tick += new EventHandler(timer1_Tick);
        }

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Process.Start("C:\\WINDOWS\\system32\\rasphone.exe","-d DELTA1");
    }

}
}

このコードが行うことは、このプログラムを実行したときにダイヤラーが既に接続されている場合、何もしません。4秒後に再チェックさえしません。しかし、このプログラムを実行したときにダイヤラーが接続されていない場合は、ダイヤラーを即座に接続し、確認もせずに 4 秒ごとにダイヤラーを再接続しようとします (Google に ping を実行します)。

タイマー機能を使ったことがないので、タイマーを正しく設定できないようです。誰かが私を助けてくれれば、本当に感謝しています。

よろしく、 Shajee A.

4

2 に答える 2

14

ping コードをタイマーのTickハンドラー内に移動するだけでよいようです。このような:

private void Form1_Load(object sender, EventArgs e)
{
    timer.Interval = 4000;
    timer.Enabled = true; 
    timer.Tick += new EventHandler(timer1_Tick);
    timer.Start(); 
}

private void timer1_Tick(object sender, EventArgs e)
{
    Ping ping = new Ping();
    PingReply pingStatus = ping.Send(IPAddress.Parse("208.69.34.231"));

    if (pingStatus.Status != IPStatus.Success)
    {
        Process.Start("C:\\WINDOWS\\system32\\rasphone.exe","-d DELTA1");
    }
}
于 2013-06-10T11:46:21.707 に答える