سؤال

وأنا بحاجة لاستعادة شكل حالة الخطأ حيث يحصل ترك الملف في حالة مؤمن. كيف يمكنني في ج # أقول هذا الملف لإعادة انها الأقفال؟ ولست بحاجة لإضافة إلى هذا يتم فتح الملف من قبل دلل 3rd الطرف وليس لدي فعلا الوصول إلى مقبض الملف.

هل كانت مفيدة؟

المحلول

هل يمكن ربما بدء عملية سطر الأوامر مثل الشبكة أو psfile مع شيء على غرار:

وSystem.Diagnostics.Process.Start("psfile c:\myfile.txt -c");

ويمكنك الحصول على psfile هنا .

ويمكنك أيضا استخدام

وnet file ID /close

ولكن هذا يتطلب منك أن تعرف هوية الملف، والذي سيستغرق العمل أكثر قليلا.

وغير مختبر ولكن هذا يجب أن تعطيك نقطة انطلاق.

نصائح أخرى

وقفل ملف هو من مسؤولية نظام التشغيل (نيابة عن البرنامج الذي يفتحه). إذا تم ترك الملف في حالة مؤمن، لها حقا حتى OS لفتح. هذا يحدث عادة تلقائيا عند عملية فتح مخارج الملف.

وهناك، مع ذلك، أداة باردة حقا أن جئت عبر من شأنها أن تساعد. انه دعا أونلوكر .

وأود أن تنظر حقا العثور دلل 3rd الطرف الآخر. وينبغي لأي معالجة النظام تيارات يستجيب بشكل صحيح لخطأ الظروف وعدم ترك أشياء مثل أقفال ملف في المكان.

هل من الممكن أن المكتبة يفعل توفير حالة الخطأ تنظيف، وكنت قد ما يزيد قليلا بدا ذلك؟ جرب شيئا مثل ما يلي،

 try {
   thirdPartyObj = new ThirdPartObj();
   // Some possible error causing object actions
 catch(Exception ex) {
   thirdPartyObj = null; // The object should close its resources
 }

لديك لإغلاق الملف باستخدام .Close (). كنت بحاجة للتأكد من لا يزال لديك وسيلة للوصول إلى كائن ملف.

وعادة يمكن تجنب هذا الخطأ من خلال كتابة المحاولة {} ... وأخيرا {} بناء بعد التعليمة البرمجية التي لا الملف I / O. في كتلة وأخيرا {}، وكنت استدعاء الأسلوب إغلاق كائن الملف الخاص بك، ومنع هذا الشرط. يمكنك أيضا استخدام باستخدام {} كتلة عند إنشاء الملفات الخاصة بك، وهذا أيضا أن تأخذ الرعاية من هذه المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top