PDA

View Full Version : حذف فایل Lock شده از داخل یه فولدر



A_1397
سه شنبه 05 آبان 1394, 14:29 عصر
سلام
دوستان من تو برنامم یه قسمتی هست که میاد و چنتا فایل توی یه فولدر مشخص ایجاد می کنه. بعد باید این فایل ها دیلیت بشن تا اگه لازم بود دوباره همین فایل ها تو همون مسیر ایجاد بشن. حالا مشکل اینه که توی فایل های ایجاد شده یه فایل هم به پسوند lock ایجاد میشه که با دستور system.IO.File.Delete دیلیت نمیشه. و اررور میده که در حال استفاده ست. چطوری میشه اینو حذفش کرد؟؟

MortezaZandi
شنبه 16 آبان 1394, 04:58 صبح
سلام
به طور کلی این فایل یا توسط خود برنامه درحال استفاده است یا توسط برنامه ای دیگر.
اگر توسط خود برنامه درحال استفاده است ، از ابتدا کدتان را بررسی کنید و ببینید در کجا دسترسی یا اشاره گری به فایل بدون این که بسته شود یا از بین برود رها شده است. یا شاید نخ دیگری از برنامه شما در حال استفاده از این فایل باشد.

و اگر برنامه ای غیر از پروسس شما درحال استفاده از فایل است ، معمولا ابتدا اسم برنامه را پیدا میکنند و سپس به کاربر هشدار میدهند که برای ادامه باید این برنامه را ببندید...
در ادامه کدی قرار میدم که نام پروسس قفل کننده فایل را بر میگرداند.
این کد به زبان C#‎‎ است:



public static string GetFileProcessName(string filePath)
{
Process[] procs = Process.GetProcesses();

string fileName = Path.GetFileName(filePath);

foreach (Process proc in procs)
{
if (proc.MainWindowHandle != new IntPtr(0) && !proc.HasExited)
{
ProcessModule[] arr = new ProcessModule[proc.Modules.Count];
foreach (ProcessModule pm in proc.Modules)
{
if (pm.ModuleName == fileName)
return proc.ProcessName;
}
}
}

return null;
}

A_1397
دوشنبه 30 آذر 1394, 14:08 عصر
توسط خوده برنامه م استفاده می شه که نمیتونه حذفش کنه. ولی نمیدونم چطوری این ارتباط رو کنسل کنم که بتونه حذف بشه. با توجه به اینکه بعد از حذف فایل ها هیچ جای برنامه از این فایل استفاده نمیکنه. و با بستن برنامه این فایل با پسوند lock از بین میره.