PDA

View Full Version : مشکل کار با فایل



farghabil
جمعه 08 دی 1391, 16:21 عصر
سلام
من دوتا تایمر دارم که یکیش داره یه چیزایی رو تو یه فایل تکست مینویسه و اون یکی همون فایلو ایمیل میکنه
ولی چون و یه بازه های زمانی این دوتا تایمر به هم میرسن(هم میخواد بنویسه و هم بفرسته) خطا میده که فایل توسط برنامه دیگه ای درحال استفادس.
میخوام بدونم چطور میشه وقتی تایمری که میخواد ایمیل بفرسته کاری کنه که هیچ برنامه ای از اون فایل استفاده نکنه؟
ممنون

danialafshari
جمعه 08 دی 1391, 17:17 عصر
سلام دوست عزیز

اگر مشکلت Collection یا همون برخورد است می تونی از Threading استفاده کنی :

System.Threading.Thread.Sleep(1000);

موفق باشی

farghabil
جمعه 08 دی 1391, 18:21 عصر
با اون حل نشد
این پیغامو میده
The process cannot access the file 'c:\temp\log.txt' because it is being used by another process.

اونی که گفتی رو کجا استفاده کنم؟

danialafshari
جمعه 08 دی 1391, 18:25 عصر
وقتی نمیدونم کدت چیه چطور بگم که کجا استفاده کنی؟

morteza5358
جمعه 08 دی 1391, 18:29 عصر
سلام
میتونی هر وقت میخوای فایلت رو ایمیل کنی ، یه کپی ازش بگیر.
فایلو ایمیل کن و حذفش کن.دوباره هر وقت خواستی ایمیلش کنی ازش کپی بگیر.
و این داستان ادامه دارد.......

farghabil
جمعه 08 دی 1391, 18:31 عصر
من توی تایمر که اینتروالشم کمه میاد یه فایل رو میسازه اینطوری
File.WriteAllText(@"c:\temp\log.txt", textBox1.Text);
یه تایمرم دارم که اینتروالش بیشتره و میاد همین فایلی رو که ساخته شد بالا رو ایمیل میکنه
اما بعد از جند بار که میل میکنه پیغام زیر رو میده
The process cannot access the file 'c:\temp\log.txt' because it is being used by another process.

farghabil
جمعه 08 دی 1391, 18:33 عصر
سلام
میتونی هر وقت میخوای فایلت رو ایمیل کنی ، یه کپی ازش بگیر.
فایلو ایمیل کن و حذفش کن.دوباره هر وقت خواستی ایمیلش کنی ازش کپی بگیر.
و این داستان ادامه دارد.......

این کارم کردم
ولی یه جاهایی وقتی میخواد ز فایل کپی بگیره و میخواد بنویسه باهم تو یک زمان اتفاق میفته و بازم همین مشکل پیش میاد

morteza5358
جمعه 08 دی 1391, 18:48 عصر
نمیشه try-catch بذاری؟
اگه exeption داشت دوباره سعی کنه؟

farghabil
جمعه 08 دی 1391, 19:02 عصر
نمیشه try-catch بذاری؟
اگه exeption داشت دوباره سعی کنه؟

فکرکنم با اینکه گفتی بشه
یه توضیح درمورد همین exeption میدی؟ try رو بلدم ولی اگه لطف کنی کامل بگی ممنون میشم دوست خوبم

morteza5358
جمعه 08 دی 1391, 19:05 عصر
سلام
try
{
فایل آپلود بشه
}
catch (Exception)
{
دوباره آپلود کن
}

morteza5358
جمعه 08 دی 1391, 19:08 عصر
یا اینطوری...
try
{
//آپلود کن
}
catch (Exception ex)
{

if (ex.Message == "The process cannot access the file 'c:\\temp\\log.txt' because it is being used by another process.")
{
//دوباره آپلود کن
}
}

farghabil
جمعه 08 دی 1391, 19:27 عصر
آقا وقتی try استفاده کردم دیگه میل نمیکنه

morteza5358
جمعه 08 دی 1391, 19:28 عصر
از این کد استفاده کردی؟
try
{
//آپلود کن
}
catch (Exception ex)
{

if (ex.Message == "The process cannot access the file 'c:\\temp\\log.txt' because it is being used by another process.")
{
//دوباره آپلود کن
}
}

morteza5358
جمعه 08 دی 1391, 19:29 عصر
BreakPoint بذار ببین وقتی میره تو catch چرا ایمیل نمیکنه....

morteza5358
جمعه 08 دی 1391, 19:36 عصر
ببین با این میشه...
try
{
//آپلود کن
}
catch (Exception)
{

System.Threading.Thread.Sleep(1000);
//دوباره آپلود کن
}

farghabil
جمعه 08 دی 1391, 19:53 عصر
اینکارو کردم
آقا راستی وقتی میخواد میل کنه خطا نمیده، وقتی میخواد تو قایل بنویسه خطا میده، اون جیزایی رو هم که گفتید رو اعمال کردم ولی بازم ایمیل نمیکنه
واقعا نمیدونم چرا
تو try میره ولی دیگه تو catch نمیره

morteza5358
جمعه 08 دی 1391, 20:03 عصر
نمیفهمم.
وقتی پیام میده یعنی اینکه Exeption داره.محاله که نره تو catch
اینو تست کردی؟
try
{
//آپلود کن
}
catch (Exception)
{

System.Threading.Thread.Sleep(1000);
//دوباره آپلود کن
}

BreakPoint بذار رو خط 6 کد بالا ، ببین میره تو یا نه؟
باید بره حتما....

نوشتن تو فایل رو هم اینجوری بنویس:
try
{
//توفایل بنویس و فایلو ببند
}
catch (Exception ex)
{

System.Threading.Thread.Sleep(1000);
//دوباره سعی کن تو فایل بنویسی
}
راستی وقتی تو فایلت مینویسی ، فایل رو می بندی یا نه؟؟؟؟؟؟

farghabil
جمعه 08 دی 1391, 21:49 عصر
روانیتم
مرسی

morteza5358
جمعه 08 دی 1391, 22:06 عصر
خوشحالم مشکلت حل شد.:لبخندساده:

morteza5358
جمعه 08 دی 1391, 22:12 عصر
یه چیزی رو بگم که این کار اساسا غیر استاندارده!
چرا از یه تایمر استفاده نمیکنی.
هر وقت تو فایلت نوشتی ایمیلش هم بکن!

به هر جهت صلاح کار خویش خسروان دانند!!!