Visual Basic.NET - Error ContextSwitchDeadlock, timeout 60+

 
Vista:
sin imagen de perfil

Error ContextSwitchDeadlock, timeout 60+

Publicado por snti (29 intervenciones) el 29/05/2014 15:48:36
Tengo la siguiente excepción:

"El CLR no ha podido realizar la transición del contexto COM 0x201498 al contexto COM 0x201608 durante 60 segundos."

Esto sucede cuando hago un backup de la base de datos por medio de vb. La consulta en SQL Server anda sin problemas. La base pesa 800mb y demora un poco menos de 2m en respaldarse.
Pero cuando le doy a un botón para que haga el respaldo, larga esa excepción, no es siempre, a veces logra respaldar la base.
Encontré por ahí de colocar en la firma del método que contiene el backup la siguiente linea. <MTAThread()>.Pero sigue igual.

Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Error ContextSwitchDeadlock, timeout 60+

Publicado por Pico (167 intervenciones) el 29/05/2014 18:36:20
Sí, una idea, y con una vale. El problema es que dejas colgado el hilo principal del programa haciendo el backup por ser la base de datos gorda. Mete esa función en otro hilo para que el principal pueda seguir trabajando. Usa BackgroundWorker, por ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error ContextSwitchDeadlock, timeout 60+

Publicado por snti (29 intervenciones) el 30/05/2014 06:17:27
El error da pq sobrepasa el timeout, seguro que eso solo sucede en el hilo principal? pq en ese caso podría funcionar en un hilo secundario. De lo contrario sucedería lo mismo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error ContextSwitchDeadlock, timeout 60+

Publicado por Pico (167 intervenciones) el 30/05/2014 08:19:44
El error es ContextSwitchDeadlock. Ese es el error. Nada tiene que ver con un timeout El que haya un contador de tiempo sobrepasado no quiere decir que haya un timeout. El windows está lleno de contadores de tiempo y si cada vez que se sobrepasa uno vas a entender un timeout estamos apañados. Se produce por lo que te he dicho y se soluciona como te he dicho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar