سؤال

ولدي التطبيق الذي يفتح ضمنا على التعامل مع دلل / الملف. في مرحلة ما في التطبيق، أريد أن تحرير هذا المؤشر. كيف يمكنني فعل ذلك؟ طلبي هو في C #.

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

المحلول

واستخدام PInvoke إذا كان لديك معالج الذي تريد إغلاق

[System.Runtime.InteropServices.DllImport("Kernel32")]
private extern static Boolean CloseHandle(IntPtr handle);

نصائح أخرى

وماذا بالضبط كنت تحاول أن تفعل؟ إذا كنت ترغب في تحميل تجميع للقيام ببعض الاشياء مع ذلك، وبعد ذلك تفرغ تماما، وكنت في حاجة إلى الاعتماد على خلق مجال التطبيق الجديد.

public static void Main(string[] args)
{
AppDomain appDomain = AppDomain.CreateDomain("NewAppDomain");
appDomain.DoCallBack(new CrossAppDomainDelegate(AsmLoad));

// At this point, your assembly is locked, you can't delete

AppDomain.Unload(appDomain);
Console.WriteLine("AppDomain unloaded");

//You've completely unloaded your assembly. Now if you want, you can delete the same

}

public static void AsmLoad()
{
Assembly assembly = Assembly.LoadFrom(@"c:\Yourassembly.dll");

//Loaded to the new app domain. You can do some stuff here
Console.WriteLine("Assembly loaded in {0}",AppDomain.CurrentDomain.FriendlyName);
}

وإلقاء نظرة على هذا المنصب لأكثر من ذلك، HTTP: //blogs.msdn.com/suzcook/archive/2003/07/08/57211.aspx

<اقتباس فقرة>   

وأو، إذا كنت قلقا فقط حول   حفظ ملف مؤمن، هل يمكن استخدام   الظل النسخ. وهذا سيجعل نسخة   الملف على القرص وتحميله من   الموقع الجديد. الملف الأصلي   لن يكون مؤمنا بهذا الحمل. إلى   القيام بذلك، تعيين   AppDomainSetup.ShadowCopyFiles ل   "صحيح" عند إنشاء أو في AppDomain   AppDomain.ShadowCopyFiles مجموعة إلى true   بعد بالفعل تم إنشاؤه.

ومجرد استخدام تخلص أو الأسلوب إغلاق الفئة التي فتحت التعامل معها.

وأنا لا أعرف وسيلة سهلة. الإفراط في قفل ملف الضمني هو شيء لقد كره دائما عن ويندوز.

إذا كنت بحاجة إلى استبدال الملف، يمكن MoveFileEx تفعل ذلك في التمهيد التالي. وكنت استخدامه لإعادة تسمية أو حذف النص الأصلي، ومن ثم إعادة تسمية شيء آخر في مكانه. http://msdn.microsoft.com/en-us /library/aa365240(VS.85).aspx http://www.pinvoke.net/default.aspx/kernel32/MoveFileEx. أتش تي أم أل

إذا كنت لا تريد الفوضى مع API مباشرة هناك MoveFile في جناح سسنترنلس الذي يفعل نفس الشيء: <لأ href = "http://technet.microsoft.com/en-us/sysinternals/bb897556.aspx "يختلط =" noreferrer نوفولو "> http://technet.microsoft.com/en-us/sysinternals/bb897556.aspx

وأو هل يمكن أن يكون الملف عند البرنامج ليست قيد التشغيل وصول برنامج آخر.

وهناك طرق للحصول على قائمة مقابض لكل عملية، إذا كنت ترغب حقا في محاولة لإغلاق المقبض، الذي على الأرجح مجرد تحطم البرنامج إذا يحاول الصافي للوصول إليه مرة أخرى. انها ليست جميلة، ومثال على ذلك هو C ++: http://www.codeguru.com/forum/showthread.php؟t= 176997

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