2011-03-24 11 views
5

Tengo un requisito en mi aplicación donde necesito crear el archivo en una unidad de red, pero cuando la creación de archivos avanza si la aplicación desconectada de red se bloquea por un tiempo y arroja una excepción.Cómo establecer un tiempo de espera para el método File.Create en la unidad de red?

¿Hay alguna manera de establecer un tiempo de espera para File.Create?

+1

Esto es casi siempre un error. Solo está optimizando su código para que falle más rápido, no ayuda al usuario a realizar el trabajo. Peor aún, está agregando un nuevo modo de falla: no espera lo suficiente. Ahora es su problema, no el administrador de LAN. –

Respuesta

2

Algo así como que se puede utilizar para poner en práctica el tiempo de espera de forma manual:

var fileCreatingThread = new Thread(...); 
fileCreatingThread.Start(); 
if (fileCreatingThread.Join(TimeSpan.FromSeconds(5)) { /* Worked correctly */} 
else 
{ 
    // time-out 
} 
+1

1) Esto no hace frente a ninguna excepción que pueda arrojar el otro hilo. 2) Matar hilos no es bueno. – CodesInChaos

+0

@CodeInChaos, ¿quiere decir que hay un enfoque diferente a esto o que debería escribir código listo para producción aquí con manejo de excepciones, registro, etc.? – Snowbear

+0

Estaba señalando el código emitido con este código para que el OP pueda ocuparse de ellos cuando crea su código de producción. Y no mataría el hilo. Simplemente lo dejaría correr y lo dejaría morir una vez que haya terminado su trabajo. Killing no funcionará de todos modos ya que 'Thread.Abort' no puede interrumpir el código no administrado. Y cualquier método más fuerte de matar hace que el estado de tu proceso sea indefinido. – CodesInChaos

0

No sé de cualquier manera de configurar el tiempo de espera de red para File.Create(). Parece probable que esto esté integrado en el marco o más probablemente sea el sistema operativo en sí mismo.

¿Puede intentar establecer una conexión de red antes de crear el archivo? Tal vez hacer ping al objetivo o abrir un socket? Si esto falla, usted sabe que no debe intentar crear el archivo. Si tiene éxito, hay buenas posibilidades de que la creación del archivo se realice a menos que haya un problema de seguridad.

Cuestiones relacionadas