نمایش نتایج 1 تا 15 از 15

نام تاپیک: برنامه همواره در حال اجرا

  1. #1
    کاربر تازه وارد آواتار ma_barnamenevis
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همین جا
    پست
    79

    برنامه همواره در حال اجرا

    با سلام به دوستان

    من می خوام برنامه ای بنویسم که به محض قرار گرفتن فایل خاصی در مسیر خاصی عملیاتی را اجرا کند ، من این برنامه رو با یک حلقه while و با تأخیر 2 ثانیه تحت console بصورت زیر نوشتم :


    staticvoid Main(string[] args)

    {

    while (1 == 1)

    {


    Thread.Sleep(2000);


    DirectoryInfo vPath = newDirectoryInfo("E:\\General\\Order\\");


    FileInfo[] vF = vPath.GetFiles();


    if (vF.Length != 0)

    {


    Process.Start("E:\\ConsoleGeneral.exe");


    foreach (FileInfo _File in vF)

    {

    _File.Delete();

    }

    }

    }



    }




    ولی با اجرای این برنامه حجم حافظه اشغالی به مرور زمان بالا می رود و از اونجا که همواره در حال اجرا باید باشد سرور رو کند می کنه یا اصن می خوابونه، فکر می کنم راههای دیگه ای مثل سوکت پروگرمینگ و از این قبیل برای این نوع برنامه ها باشه ، لطفاً راهنمایی بفرمایید.

  2. #2

    نقل قول: برنامه همواره در حال اجرا

    دو تا متغيير DirectoryInfo vPath و FileInfo[] vF قبل از حلقه while تعريف كنيد
    بعد ببينيد بازم حجم برناكه افزايش پيدا ميكنه؟

  3. #3
    کاربر تازه وارد آواتار ma_barnamenevis
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همین جا
    پست
    79

    نقل قول: برنامه همواره در حال اجرا

    نه تغییری نکرد

  4. #4

    نقل قول: برنامه همواره در حال اجرا

    ببين من الان تست كردم
    حجم اوليه برنامه شد 720 KB
    بعد كم كم رفت تا رسيد به 3900 KB
    بعد دوباره برگشت به 720 KB
    همين روندو تا زمان حياتش ادامه ميده

  5. #5

    نقل قول: برنامه همواره در حال اجرا

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

  6. #6

    نقل قول: برنامه همواره در حال اجرا

    استفاده از تایمر یا بک گراند ورکر میزان استفاده نرم افزار از رم را بالا میبره
    فکر کنم برای این طور کارها راه بهتر و اصولی تری باشه

  7. #7

    نقل قول: برنامه همواره در حال اجرا

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    استفاده از تایمر یا بک گراند ورکر میزان استفاده نرم افزار از رم را بالا میبره
    فکر کنم برای این طور کارها راه بهتر و اصولی تری باشه
    درسته شما درست میگید
    ولی من گفتم بعد از این که کار تموم میشه دوباره حافظه رمی که اشغال کرده بوده خالی میشه برا این گفتم !
    حالا یه تست بکنه ! نمیدونم من دیگه دوستان دیگری هم هستن که بیشتر از من اطلاع دارند .....

  8. #8
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: برنامه همواره در حال اجرا

    بنظر من یک راه بهتر مانیتور کردن تغییرات هارد هست، بعد اگه مکان خاصی رو در نظر دارید با یک شرط بررسی کنید. اینطوری محاسبه ی بی مورد انجام نمیشه و هروقت که فایلی در هارد تغییر کرد و یا حذف شد ازش با خبر میشید؛ نه هی پشت سر هم در یک حلقه یجایی رو چک کنید و پدر خدا بیامرز کامپیوتر رو با سی پی یو و رم یکی کنید

  9. #9

    نقل قول: برنامه همواره در حال اجرا

    نقل قول نوشته شده توسط pedram.11 مشاهده تاپیک
    بنظر من یک راه بهتر مانیتور کردن تغییرات هارد هست، بعد اگه مکان خاصی رو در نظر دارید با یک شرط بررسی کنید. اینطوری محاسبه ی بی مورد انجام نمیشه و هروقت که فایلی در هارد تغییر کرد و یا حذف شد ازش با خبر میشید؛ نه هی پشت سر هم در یک حلقه یجایی رو چک کنید و پدر خدا بیامرز کامپیوتر رو با سی پی یو و رم یکی کنید
    این برای من هم جالب شده است !
    مثلا من درایو سی فلدر1 را میخوام کنترل کنم
    چجوری میتونم کنترل کنم ؟ میشه ؟ اخه فک نکنم اینجوری بشه ها....!
    نمونه کد دارید ؟
    میشه بیشتر توضیح بدید
    سپاس

  10. #10
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: برنامه همواره در حال اجرا

    نقل قول نوشته شده توسط mehrdad1991h مشاهده تاپیک
    این برای من هم جالب شده است !
    مثلا من درایو سی فلدر1 را میخوام کنترل کنم
    چجوری میتونم کنترل کنم ؟ میشه ؟ اخه فک نکنم اینجوری بشه ها....!
    نمونه کد دارید ؟
    میشه بیشتر توضیح بدید
    سپاس
    چرا نشه، پس آنتی ویروسا چطور میفهمن که فایل جدیدی اضافه شده و یا تغغیر کرده که اونو پردازش کنن؟!
    تا چند دقیقه بعد یک پروژه و توضیح قرار میدم

  11. #11
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: برنامه همواره در حال اجرا

    سلام دوباره،برای مانیتور کردن تغییر یک پوشه میتونید از کنترل FileSystemWatcher در System.IO استفاده کنید.
    برای اینکار مثلا برای مانیتور کردن تغییرات در درایو C یک FileSystemWatcher تعریف میکنیم و برای رویداد های تغغیرنام تغییر دیتا ایجاد فایل و یا حذف فایل یک متد معذفی میکنیم:
                FileSystemWatcher fsw = new FileSystemWatcher(FolderDir);
    fsw.Renamed += fsw_Renamed;
    fsw.Changed += fsw_Changed;
    fsw.Created += fsw_Created;
    fsw.Deleted += fsw_Deleted;
    fsw.IncludeSubdirectories = true;
    fsw.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size;
    fsw.EnableRaisingEvents = true;


    IncludeSubdirectories: در نظر گرفتن پوشه های عضو زیرگروه
    NotifyFilter: گزینه هایی که میخواید بررسی بشه
    EnableRaisingEvents: فعال بودن مانیتور.

    براتون یه پروژه هم آماده کردم. بهینه کردن کدهاش با خودتون
    تصویر:
    dirwatcher.jpg
    فایل های ضمیمه فایل های ضمیمه

  12. #12
    کاربر تازه وارد آواتار ma_barnamenevis
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همین جا
    پست
    79

    نقل قول: برنامه همواره در حال اجرا

    کدتون عالیه فقط یه نکته مهم اینکه چطوری بدون استفاده از while و غیره این برنامه هر ثانیه اجرا بشه و کنترلش رو انجام بده ؟

  13. #13
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: برنامه همواره در حال اجرا

    این برنامه چک نمیکنه، به محض رویداد یک اتفاقی(حذف، اضافه و ویرایش فایل) با استفاده از هندلر های موجود در کنترل، متدهای مربوطه فراخوانی میشن. پس تا وقتی که کاری انجام نشده برنامه پردازش اضافی نمیکنه

  14. #14
    کاربر تازه وارد آواتار ma_barnamenevis
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    همین جا
    پست
    79

    نقل قول: برنامه همواره در حال اجرا

    خوب من exe اش رو کجا و چجوری بزارم که به موقع هندلرهاش رو فراخونی کنه ، ممنون میشم بیشتر راهنمایی کنید

  15. #15
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: برنامه همواره در حال اجرا

    نقل قول نوشته شده توسط ma_barnamenevis مشاهده تاپیک
    خوب من exe اش رو کجا و چجوری بزارم
    من متوجه نشدم، مگه شما نمیخواید از تغییرات در یک پوشه یا یک فایل مطلع بشید؟ این کدهایی که قرار دادم همین رو به شما خبر میده، کار دیگه ای میخواید انجام بدید؟

تاپیک های مشابه

  1. خواندن هندل‌های برنامه‌های در حال اجرا
    نوشته شده توسط روح اله معینی زاده در بخش VB.NET
    پاسخ: 16
    آخرین پست: شنبه 01 مرداد 1390, 11:59 صبح
  2. بدست اورد هندل كتابخانه ها در برنامه هاي در حال اجرا
    نوشته شده توسط ali_mohamadi8928 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: چهارشنبه 14 مرداد 1388, 12:48 عصر
  3. ترتیب بسته شدن برنامه های در حال اجرا
    نوشته شده توسط Mask در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: چهارشنبه 24 مهر 1387, 03:21 صبح
  4. پاسخ: 11
    آخرین پست: سه شنبه 12 تیر 1386, 15:24 عصر
  5. سوال در مورد برنامه های در حال اجرا
    نوشته شده توسط amin_deltang در بخش برنامه نویسی در Delphi
    پاسخ: 5
    آخرین پست: چهارشنبه 30 خرداد 1386, 15:10 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •