PDA

View Full Version : سوال: استفاده از یک فایل متنی بوسیله دو برنامه جدا



mosab_vb
شنبه 23 دی 1391, 22:18 عصر
سلام دوستان.من میخوام از یک فایل تکست بوسیله دو تا برنامه جدا از هم استفاده کنم.در واقع یک برنامه داخل اون می نویسه و برنامه ی بعدی همزمان از فایل می خونه و محتواش رو نمایش میده.ولی در اجرای این برنامه با این ارور مواجه میشم.

The process cannot access the file because it is being used by another process.

لطفا راهنماییم کنید.ممنون.

group45
شنبه 23 دی 1391, 22:42 عصر
با سلام
معلومه دیگه!!!!!! چون برنامه اول فایل رو باز کرده و داره باش کار میکنه اجازه دسترسی برنامه دیگه ای رو به فایل نمیده.
اگه امکانش هست دو کار رو با یک برنامه انجام بدید.
اگه اطلاعات همزمان با درج باید خونده بشه و برنامه ها باید جدا باشن مجبورید از فایل اصلی یه temp بگیرید و برنامه دوم با اون کار کنه

mosab_vb
شنبه 23 دی 1391, 22:50 عصر
اگر تمپ بگیرم به نوعی باز برنامه ی اول داره از فایل تمپ استفاده می کنه.پس اجازه ی استفاده به برنامه ی دیگر رو نمی ده.هیچ راه حلی نیست؟

mtchabok
شنبه 23 دی 1391, 22:55 عصر
سلام
می تونید فقط هنگام نوشتن فایل رو باز کنید و برنامه دوم هم هنگام خواندن .
برای نوشتن که مشخصه چه زمانی باید فایل در دسترس قرار بگیره ولی برای برنامه دوم می تونید از یه تایمر استفاده کنید که در یه بازه زمانی فایل رو برای خواندن باز کنه و باز ببنده .
در ضمن در هر دو برنامه می بایست کنترل خطا رو انجام بدید تا خطا برای کاربر نمایش داده نشه و خودتون بتونید با یسری الگوریتم درست در فایل بنویسید و یا بخونید .
موفق باشید

mosab_vb
شنبه 23 دی 1391, 23:02 عصر
ممنونم.ولی توی برنامه ی دوم امکان استفاده از تایمر وجود نداره.چون یه برنامه هست که فقط زبانش سی شارپه.در واقع برنامه اول گیر میده.برنامه دوم مشکلی نداره می خونه.دارم دنبال راه حل می گردم.

mosab_vb
شنبه 23 دی 1391, 23:09 عصر
مشکل حل شد.این رو می تونید به عنوان نکته ی آموزشی داشته باشید:
از این متودها استفاده کردم:

FileStream fs = File.Open(@"file path", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read);
var sw = new StreamWriter(fs);
sw.AutoFlush = true;
sw.Write(text);

تو فایل استریم اگه fileshare.read جزء آرگومان باشه تو برنامه ی اول حله.به برنامه ی دوم اجازه ی استفاده میده.