Я написал небольшое консольное приложение, которое подключается к удаленному сайту, загружает некоторые данные и обрабатывает их. Поскольку это сетевая операция, поэтому я хочу, чтобы мое приложение было достаточно интеллектуальным, чтобы перейти в состояние паузы, когда нет подключения к Интернету. Если доступ к Интернету становится доступным, он должен возобновить свою работу.обнаружение подключения к Интернету/отключение в консольном приложении C#
Что я сделал до сих пор, если я запускаю приложение, он начинает загрузку данных с удаленного сайта. Если я отключу подключение к Интернету, он ведет себя правильно, отображая соответствующую информацию. Но, как только сетевое соединение вверх, оно возобновляется и загружает данные только для одной итерации цикла while.
Вот код:
class Program
{
static bool networkIsAvailable = false;
static StreamWriter writer = null;
static int i = 1;
static string URI = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxx/" + i + "/";
static void Main(string[] args)
{
writer = new StreamWriter("c:\\StudentsList.txt", true);
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(NetworkChange_NetworkAvailabilityChanged);
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface nic in nics)
{
if (
(nic.NetworkInterfaceType != NetworkInterfaceType.Loopback && nic.NetworkInterfaceType != NetworkInterfaceType.Tunnel) &&
nic.OperationalStatus == OperationalStatus.Up)
{
networkIsAvailable = true;
}
}
if (!networkIsAvailable)
Console.WriteLine("Internet connection not available! We resume as soon as network is available...");
else
ConnectToPUServer();
}
public static void ConnectToPUServer()
{
var client = new WebClient();
while (i < 500 && networkIsAvailable)
{
string html = client.DownloadString(URI);
//some data processing
Console.WriteLine(i);
i++;
URI = "http://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/" + i + "/";
}
}
static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
networkIsAvailable = e.IsAvailable;
if (!networkIsAvailable)
Console.WriteLine("Internet connection not available! We resume as soon as network is available...");
while (!networkIsAvailable)
{
//waiting for internet connection
}
ConnectToPUServer();
Console.WriteLine("Complete.");
writer.Close();
}
}
После возобновления, почему в то время как петля ConnectToPUServer
выполняется только один раз ??
Спасибо.
Visual Studio является редактором и не дает никакой информации о вашем коде, который применит. Вместо этого укажите версию .Net. – OmegaMan
.NET Framework 4.5 – Azeem
Я просто запускаю вашу программу и цикл while, о котором вы упоминали, запускается для указанной вами суммы ... – Zaki