PDA

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



$M03N$
دوشنبه 17 آبان 1389, 13:41 عصر
سلام به اساتید و حضار محترم و محترمه :D
من می خوام در اجرای یک دستور وقفه ایجاد کنم، اما نمی خوام کل پروژه اسلیپ بشه

برنامه من در حال استفاده از یک فایل است، می خوام تا هنگام free شدن اون فایل، دستورات بعدی به تاخیر بیفته
یعنی یسری کد هست، که دارن از یک فایل استفاده می کنن، چند خط بعد باز دوباره بایست از اون فایل استفاده بشه، اما اررور میزنه که فایل در حال استفاده است

به نظر شما را حل چیه ؟ ممنون میشم کمک کنید

Rejnev
دوشنبه 17 آبان 1389, 14:32 عصر
نمونه كدش رو هم بذار ببينيم.
اگه ترد كار با فايلت در يكي ديگه باشه و ترد رو sleep كني به ترد اصلي لطمه اي نميزنه و تاخير هم به وجود مياد

$M03N$
دوشنبه 17 آبان 1389, 14:59 عصر
این کدشه، این کد تو یک حلقست، مدام داره اجرا میشه، نظر بدین
همینطور که میبینید، هر دو کد در یک قسمت، پس نمیشه با ترد اسلیپ کار کرد




try
{

System.IO.File.Copy(FileAdd, Path.ChangeExtension(FileAdd, "tmp"),true);


Attachment item = new Attachment(Path.ChangeExtension(FileAdd, "tmp"));
message.Attachments.Add(item);
try
{
item.Dispose();
}
load_file();
MessageBox.Show("Successfully");
catch (Exception)
{
MessageBox.Show("Faild");
item.Dispose();
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);

}

Rejnev
دوشنبه 17 آبان 1389, 16:03 عصر
يعني مادامي كه فايل داره كپي ميشه دستور بعدي شما اجرا ميشه كه خلل ايجاد ميكنه در اجراي برنامه. درسته؟
ميتوني ترد رو بخوابوني و بعد از چند ثانيه دوباره چك كني كه فايل آزاده يا نه. اگه هست كه كار بعدي رو روش انجام بده وگرنه دوباره بخوابونش

$M03N$
دوشنبه 17 آبان 1389, 16:14 عصر
دقیقا، یجا می خواد این فایل را بخونه، از اون طرف می خواد دوباره کپیش کنه، باست یه فرجه بهش بدیم که فایل خونده بشه، بعد بریم دوباره سروقت کپی کردنش
نه، با ترد خوابوندن حل نمیشه :متفکر:
اصلا راهی هست که بشه فهمید فایل آزاده یا نه؟؟؟ با کد نویسی ؟؟؟ اگه باشه که با یه if حله:لبخندساده:
به نظرت راه دیگه ای هم هست ؟؟؟

Rejnev
دوشنبه 17 آبان 1389, 17:03 عصر
حتما هست ولي الآن من نميدونم.
ناچارا همون try Catch هم همين كارو ميكنه برات. اگه catch شد يعني نتونسته(همون if كه گفتي حله)

$M03N$
دوشنبه 17 آبان 1389, 17:15 عصر
دنبال یه راه اساسی هستم :متفکر: بازم ممنون