Программа на C# вызывает синий экран?
Это только важные вещи, которые показывает bluescreen. Я нахожусь в Windows 7 x64.
"проблема была обнаружена и Windows был закрыт, чтобы предотвратить повреждение к компьютеру.
PROCESS_HAS_LOCKED_PAGES
* стоп: 0x00000076 (0x0000000000000000, 0xfffffa8009dcd060, 0x0000000000000011, 0x0000000000000000)"
Я не могу работать над этим сейчас, потому что каждый раз, когда я закройте его, я получу bluescreen! Программа еще ничего не делает, кроме запуска фонового рабочего ниже. Он пингует все адреса, которые могут быть частью домашней сети пользователя и пытается подключиться к определенному порту, который будет прослушивать другая программа.
private void NetworkScanner_DoWork(object sender, DoWorkEventArgs e)
{
bool ExceptionEncountered = false;
int IPsProcessed = 0;
NetworkSearcherOutput = "Starting network scanner...";
NetworkSearcher.ReportProgress(0);
Thread.Sleep(1000);
foreach (IPAddress IP in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (IP.AddressFamily == AddressFamily.InterNetwork)
{
string[] Octets = IP.ToString().Split('.');
Octets[3] = "0";
IPAddress CurrentAddressIteration = StringArrayToIP(Octets);
while (GetLastOctet(CurrentAddressIteration) != 255)
{
PingReply Reply = new Ping().Send(CurrentAddressIteration, 5);
if (Reply.Status == IPStatus.Success)
{
NetworkSearcherOutput = CurrentAddressIteration.ToString() + " sent response.";
NetworkSearcher.ReportProgress(0);
Thread.Sleep(500);
InClient Client = new InClient(CurrentAddressIteration);
try
{
Client.Connect();
SnapshotBox.Image = Client.Receive(typeof(Image));
NetworkSearcherOutput = CurrentAddressIteration.ToString() + " is running program.";
NetworkSearcher.ReportProgress(0);
Thread.Sleep(1000);
}
catch (Exception E)
{
// A socket exception is expected when the client is not running the program.
if (E is SocketException)
{
Client.Close();
NetworkSearcherOutput = CurrentAddressIteration.ToString() + " is not running program.";
NetworkSearcher.ReportProgress(0);
Thread.Sleep(1000);
}
//Unhandled exception. Show messagebox and close.
else
{
MessageBox.Show("Network scanner encountered an unhandled exception.nn" + E.GetType().ToString() + ": " + E.Message, "Unhandled Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
ExceptionEncountered = true;
break;
}
}
}
else
{
NetworkSearcherOutput = CurrentAddressIteration.ToString() + " did not respond.";
NetworkSearcher.ReportProgress(0);
}
IPsProcessed++;
if (IPsProcessed == 5)
{
NetworkSearcher.ReportProgress(2);
IPsProcessed = 0;
}
Octets = CurrentAddressIteration.ToString().Split('.');
Octets[3] = (Int32.Parse(Octets[3]) + 1).ToString();
CurrentAddressIteration = StringArrayToIP(Octets);
}
}
}
if (!ExceptionEncountered)
{
NetworkSearcherOutput = "Network scanning complete.";
NetworkSearcher.ReportProgress(0);
NetworkSearcher.ReportProgress(100);
}
else
{
NetworkSearcherOutput = "Network scanning encountered an error.";
NetworkSearcher.ReportProgress(-1);
}
Я думал, что программы c# никогда не должны вызывать bluescreens?
2 ответов
чтобы быть ясным, нет никакого способа для "пользовательского" кода режима принудительно создать синий экран в windows, если он не использует недокументированные API и или не заставляет плохие данные в драйвер. Ваш код c#, вероятно, не виноват здесь, как если бы вы использовали классы пользовательского режима (сокет), то сокет отвечает за то, чтобы не сбой компьютера.
Как прокомментировал @Joe статья 256010 КБ поддержки Майкрософт четко описывает это сообщение, но еще лучше было понятно инструкции по захвату имени драйвера, ответственного за эту ошибку.
обратите внимание, что любой программный брандмауэр, который вы установили, также участвует на уровне режима ядра, поэтому также может нести ответственность за эту ошибку. Я рекомендую вам следовать советам статей KB и попытаться выяснить, что виновато. Но вы также можете убедиться, что обновили сетевые драйверы и программное обеспечение брандмауэра/VPN до последних стабильных версий.
Я обнаружил эту проблему несколько недель назад. Это происходит только при использовании .NET 4.
сообщил в MS Connect.
Edit:
(Will*) добавьте эту ссылку в отчет об ошибке MS Connect.
*login.live.com снова входит в бесконечную петлю...