elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Pantallaso Azul con mi programa.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pantallaso Azul con mi programa.  (Leído 1,902 veces)
**Aincrad**


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
Pantallaso Azul con mi programa.
« en: 9 Enero 2019, 00:52 am »

hola, he codificado un contador de ping en milisegundos. pero aveces hace que el windows se me crashtee y no se la razon.

a alguien ya le ha salido este error antes? el codigo del error dice > "PROCESS_HAS_LOCKED_PAGES"
 

Imagen de mi app >





@Elektro te mando el código por privado, ya que es parte de mi antivirus que ando desarrollando y todavía no publicare código.

gracias de antemano.


« Última modificación: 9 Enero 2019, 01:06 am por **Aincrad** » En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Pantallaso Azul con mi programa.
« Respuesta #1 en: 9 Enero 2019, 08:46 am »

A mi no me aparece ningún BSOD. He probado el programa compilando en modo Debug y Release, terminando el programa de forma normal, terminando de forma abrupta (usando el botón detener en VS), y cerrando Visual Studio. Cero pantallazos azules.

Según un comentario en el siguiente hilo, el cual casualmente es de un usuario que usa Windows 7 como tú, dicen que tras haber visualizado la información de depuración del volcado de memoria del BSOD, han llegado a la conclusión de que se trata de un bug de ese sistema operativo Windows 7...


Cita de: Andre.Ziegler
I've previously posted the dumps etc. to another forum here is the link. We came to the conclusion it was a bug in Windows, not the network driver? (considered "solved" of sorts :) See the OSVDB link in the post..

http://www.techsupportforum.com/forums/f217/solved-tcpip-sys-bsod-issue-530767.html

De todas formas en la documentación de Microsoft explican que se trata de un fallo por parte de algún driver instalado en el sistema (un driver de dispositivos de red, supongo, o quizás incluso pueda ser culpa de algún driver o servicio en segundo plano de algún antivirus que puedas tener en ejecución mientras haces ping), y que ocurre cuando el driver no puede liberar páginas (páginas de memoria) bloqueadas despues de una operación de entrata y salida o input/output (I/O), es decir, de una operación de escritura y lectura de las páginas bloqueadas...


Hay te explican además una posible solución.

En caso de que no sea culpa de tu antivirus, yo te propongo otra posible solución: espera a que la operación de ping finalice antes de cerrar completamente el programa.

He revisado tu código y hay varias cosas imperfectas, desde el modo en el que posicionas el Form en la esquina de la barra de tareas mediante un búcle Do While (cuando lo puedes hacer con una simple operación matemática), hasta la implementación del BackgroundWorker que tira excepciones del tipo InvalidOperationException por intentar acceder a un control desde otro thread distinto desde el que fue creado. En fin, le hice algunas modificaciones y ha quedado de la siguiente manera; pruébalo a ver si con suerte te soluciona el problema en tu PC...

Código
  1. Imports System.ComponentModel
  2. Imports System.Threading
  3.  
  4. Public NotInheritable Class Form1
  5.  
  6.    Private ReadOnly Property HostNameOrAddress As String
  7.        Get
  8.            Return Me.TextBox2?.Text
  9.        End Get
  10.    End Property
  11.  
  12.    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  13.        Dim scr As Screen = Screen.FromHandle(Me.Handle)
  14.        Me.Location = New Point((scr.WorkingArea.Right - Me.Size.Width), (scr.WorkingArea.Bottom - Me.Size.Height))
  15.  
  16.        With Me.BackgroundWorker1
  17.            .WorkerReportsProgress = True
  18.            .WorkerSupportsCancellation = True
  19.  
  20.            .RunWorkerAsync()
  21.        End With
  22.    End Sub
  23.  
  24.    Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
  25.        Dim bgw As BackgroundWorker = DirectCast(sender, BackgroundWorker)
  26.  
  27.        Do Until bgw.CancellationPending
  28.            Dim elapsed As Double = Me.MedidorPing(Me.HostNameOrAddress, TimeSpan.FromSeconds(5))
  29.            Dim userState As String
  30.            If (elapsed.Equals(Double.NaN)) Then
  31.                userState = "Ping request timed out."
  32.            Else
  33.                userState = String.Format("{0:F0} ms", elapsed)
  34.            End If
  35.  
  36.            bgw.ReportProgress(Nothing, userState)
  37.        Loop
  38.        bgw.ReportProgress(100, Nothing)
  39.    End Sub
  40.  
  41.    Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
  42.        Me.TextBox3.Text = CStr(e.UserState)
  43.    End Sub
  44.  
  45.    Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
  46.        Me.Close()
  47.    End Sub
  48.  
  49.    Private Sub HexCheckBox1_CheckedChanged(ByVal sender As Object) Handles HexCheckBox1.CheckedChanged
  50.        Me.TopMost = Me.HexCheckBox1.Checked
  51.    End Sub
  52.  
  53.    Private Sub HexButton1_Click(sender As Object, e As EventArgs) Handles HexButton1.Click
  54.        DirectCast(sender, HexButton).Enabled = False
  55.  
  56.        If (Me.BackgroundWorker1.IsBusy) Then
  57.            Me.BackgroundWorker1.CancelAsync()
  58.  
  59.            Do While Me.BackgroundWorker1.IsBusy
  60.                Application.DoEvents()
  61.                Thread.Sleep(TimeSpan.FromMilliseconds(100))
  62.            Loop
  63.        End If
  64.    End Sub
  65.  
  66.    Private Function MedidorPing(ByVal hostNameOrAddress As String, timeout As TimeSpan) As Double
  67.  
  68.        If String.IsNullOrEmpty(hostNameOrAddress) Then
  69.            Return Double.NaN
  70.        End If
  71.  
  72.        If Not My.Computer.Network.IsAvailable() Then
  73.            Return Double.NaN
  74.        End If
  75.  
  76.        Dim sw As New Stopwatch()
  77.        Try
  78.            sw.Start()
  79.            My.Computer.Network.Ping(hostNameOrAddress, CInt(timeout.TotalMilliseconds))
  80.            sw.Stop()
  81.            Return sw.Elapsed.TotalMilliseconds
  82.  
  83.        Catch ex As Exception ' ArgumentNullException, InvalidOperationException, PingException or SocketException
  84.            Return Double.NaN
  85.  
  86.        End Try
  87.  
  88.    End Function
  89.  
  90. End Class
  91.  


« Última modificación: 9 Enero 2019, 09:26 am por Eleкtro (sin pilas) » En línea

**Aincrad**


Desconectado Desconectado

Mensajes: 668



Ver Perfil WWW
Re: Pantallaso Azul con mi programa.
« Respuesta #2 en: 9 Enero 2019, 17:02 pm »

Exelente, con tu código es rápido y ya no me lanza el pantallaso azul al depurar.

grax.
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con mi tarjeta grafica Nvidea 9800 Gt 512 MB XfX...pantallaso azul...
Hardware
orerof 6 5,441 Último mensaje 24 Julio 2011, 03:01 am
por Aprendiz-Oscuro
Pantallaso azul XP
Windows
Demereth 4 2,326 Último mensaje 5 Mayo 2014, 00:02 am
por Demereth
Se me daño el windows (Pantallaso azul CNG.SYS)
Software
**Aincrad** 5 1,601 Último mensaje 22 Diciembre 2018, 23:53 pm
por EdePC
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines