2011-03-24 15 views
5

Dosyamda bir ağ sürücüsünde, ancak ağ bağlantısı kesildiğinde uygulamanın bir süreliğine askıda kalması ve bir istisna atması durumunda progess dosya oluştururken ihtiyacım olan bir gereksinimim var.Ağ sürücüsünde File.Create yöntemi için zaman aşımı nasıl belirlenir?

File.Create için zaman aşımı yapmanın herhangi bir yolu var mı? Böyle

+1

Bu neredeyse her zaman bir hatadır. Sadece daha hızlı başarısız olmak için kodunuzu optimize ediyorsunuz, kullanıcının işi bitirmesine yardımcı olmuyor. Daha da kötüsü, yeni bir hata modu ekliyorsunuz: yeterince uzun beklemiyorsunuz. Şimdi senin sorunun, LAN yöneticisinin değil. –

cevap

2

şey elle aşımını uygulamak için kullanılabilir: I() File.Create için ağ zaman aşımı yapılandırmak için herhangi bir yol bilmiyorum

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

1) Bu, diğer iş parçacığının atabileceği istisnalarla baş edemiyor. 2) Killing konuları hoş değil. – CodesInChaos

+0

@CodeInChaos, bunun için farklı bir yaklaşım var mı, yoksa üretim-hazır kod yazmalı mıyım? – Snowbear

+0

Bu kodla verilen çıktıyı işaret ediyordum, böylece OP üretim kodunu oluştururken onlara bakabiliyor. Ve iş parçacığını öldürmezdim. Sadece koşup, işini bitirdikten sonra doğal olarak ölmesine izin verdim. "Thread.Abort" un yönetilmeyen kodu kesemediğinden beri öldürme çalışmaz. Ve daha güçlü bir öldürme yöntemi, sürecinizin durumunu tanımsız hale getirir. – CodesInChaos

0

. Muhtemelen bu çerçeveye ya da büyük olasılıkla işletim sisteminin kendisine inşa edilmiş gibi görünüyor.

Dosyayı oluşturmadan önce bir ağ bağlantısı kurmaya çalışabilir misiniz? Belki hedefe ping ya da bir soket açın? Bu başarısız olursa, dosyayı oluşturmayı denemezsiniz. Başarılı olursa, bir güvenlik sorunu olmadığı sürece dosya oluşturmanın iyi bir şansı olur.