דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. הגדרת תוכנה שתרוץ ברקע כל הזמן

הגדרת תוכנה שתרוץ ברקע כל הזמן

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 2 כותבים 711 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • A מנותק
    A מנותק
    avr416
    כתב ב נערך לאחרונה על ידי
    #1

    טוב, אז הקוד מוכן ועובד.
    עכשיו אני רוצה שהוא ירוץ ברקע בלי שיראו אותו, דהיינו שלא יראו את המסך השחור של הקונסול.
    כמו כן, אני רוצה שהוא ירוץ תמיד ברקע, וכל פעם שמפעילים את המחשב יעלה מחדש.

    לגבי הסתרת הקונסול, הבנתי שאני צריך להגדיר במאפיינים במקום "consol application" להגדיר את זה כ - "'windows application".

    אולם, השאלה כיצד אני מגדיר את זה כתהליך שרץ כל הזמן ברקע, כיון שעכשיו התכנה רצה, מגדירה טיימר לעוד כמה זמן, ונסגרת.
    האם הפתרון הוא windows service כמו שמצאתי כאן?
    תודה רבה!

    פורסם במקור בפורום CODE613 ב22/01/2017 15:04 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      השיקול אם לבחור בשירות או בתוכנה רגילה הוא לא העובדה שזה רץ ברקע.
      לא הבנתי מה הבעיה בתוכנה שרצה ברקע כל הזמן? כמובן יש להוסיף אותה לאתחול. אתה שואל איך עושים זאת? http://stackoverflow.com/a/674654/1271037

      פורסם במקור בפורום CODE613 ב22/01/2017 17:24 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

        @דוד ל.ט.

        השיקול אם לבחור בשירות או בתוכנה רגילה הוא לא העובדה שזה רץ ברקע.
        לא הבנתי מה הבעיה בתוכנה שרצה ברקע כל הזמן? כמובן יש להוסיף אותה לאתחול.

        קודם כל אשמח לדעת מה ההבדלים ביניהם. אבל לעצם הענין אפרט כאן את הצורך המיוחד שלי, ואשמח לשמוע מה אתה ממליץ.
        מדובר במחשב של לקוח, שמשתמשים בו עובדים שלו (לא בדיוק.. אבל זה לצורך הענין). הוא רוצה שתרוץ עליו תוכנה שהם לא ידעו על קיומה, כלומר ללא UI וכל דבר דומה שהם יוכלו לסגור אותה, או להתחיל לחשוד מה היא עושה.
        כמו כן, התוכנה אמורה לרוץ על המחשב כל הזמן.
        בשעות מסוימות העובדים אמורים לעבוד עם הטאבלט ולא עם המחשב, ולכן הם לא אמורים להיות בסביבת המחשב.
        הלקוח רוצה לוודא שהם אכן לא נמצאים ליד המחשב, במקום להיות איפה שהם צריכים להיות, ולכן מטרת התוכנה לנטר את החיבור לרשת, ובמידה והיא מזהה חיבור ארוך - ליידע את המעסיק.

        כמו כן, לא בדיוק הצלחתי לגרום לתוכנה שהיא תעבוד באופן רציף. כיון שאני קורא למתודה (מהשרשור הקודם) שבודקת בהפעלה האם הגיע הזמן להתחיל את הניטור או לא, ולפי זה היא מגדירה את הטיימר ומפעילה את הניטור. וזהו. מיד לאחר מכן נגמרת ריצת התכנית והיא נסגרת, וממילא כשהיא נסגרת גם הטיימר מחוסל (אם אני מבין נכון איך זה עובד..).
        העניין הוא שאני צריך שהטיימר ימשיך לחיות כדי להפעיל בשעה הייעודה את מה שצריך לעשות.
        אם זו הייתה תוכנית קונסול, הייתי מגדיר:

        Console.ReadKey() או משהו דומה, שמונע מהתכנית להיסגר. אבל השאלה שלי עכשיו איך אני עושה זאת? חשבתי שאם זה שירות, אז זה לא תהיה בעיה. אבל אני עוד צריך לבדוק זאת.
        

        אשמח לעצות!!
        תודה רבה!

        פורסם במקור בפורום CODE613 ב22/01/2017 19:36 (+02:00)

        תגובה 1 תגובה אחרונה
        0
        • A מנותק
          A מנותק
          avr416
          כתב ב נערך לאחרונה על ידי
          #4

          כמו כן, לא בדיוק הצלחתי לגרום לתוכנה שהיא תעבוד באופן רציף. כיון שאני קורא למתודה (מהשרשור הקודם) שבודקת בהפעלה האם הגיע הזמן להתחיל את הניטור או לא, ולפי זה היא מגדירה את הטיימר ומפעילה את הניטור. וזהו. מיד לאחר מכן נגמרת ריצת התכנית והיא נסגרת, וממילא כשהיא נסגרת גם הטיימר מחוסל (אם אני מבין נכון איך זה עובד..).
          העניין הוא שאני צריך שהטיימר ימשיך לחיות כדי להפעיל בשעה הייעודה את מה שצריך לעשות.

          עכשיו חשבתי שאפשר לעשות סתם לולאה טיפשית שלא תגמר לעולם, כדי שהתכנית לא תיסגר, ואז אין צורך בService.
          משהו כזה:

          class Program
              {
                  static void Main(string[] args)
                  {
                     var scan = new Scanner(new DateTime(2017, 1, 22,9,33,00), new DateTime(2017, 1, 22, 11, 00, 00));
                      bool play = true;
                      while(play){
                          int c = 1;
                          c++;
                      }
                  }
              }
          

          מה אומרים??

          פורסם במקור בפורום CODE613 ב22/01/2017 21:55 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #5

            כדי שהתוכנה לא תפסיק משתמשים בApllication כמו בWinForms וכמו בWPF. (נראה לי שמאחורי הקלעים זה עובד כמו לולאה אלא שזה עם קריאה לפונקציה של Windows נראה לי שממתינה לאירוע קלט כלשהו - והתוכנה "תקועה" עד למענה מהפונקציה הזאת וחוזר חלילה בלולאה).
            במילים אחרות תפתח פרוייקט WinForms חדש, תמחק את הForm1 ואז בשגיאות תופנה לMain שם במקום new Form1 תעשה new למחלקה משלך.

            פורסם במקור בפורום CODE613 ב22/01/2017 23:42 (+02:00)

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            1
            • A מנותק
              A מנותק
              avr416
              כתב ב נערך לאחרונה על ידי
              #6

              טוב אנסה.
              אבל מה רע במה שעשיתי? חוץ מזה שזה סתם קוד מכוער..
              וגם למה נועדו הסרביסים? לא לדברים כאלה?
              תודה על המענה!

              פורסם במקור בפורום CODE613 ב22/01/2017 23:56 (+02:00)

              תגובה 1 תגובה אחרונה
              0
              • A מנותק
                A מנותק
                avr416
                כתב ב נערך לאחרונה על ידי
                #7

                @דוד ל.ט.

                במילים אחרות תפתח פרוייקט WinForms חדש, תמחק את הForm1 ואז בשגיאות תופנה לMain שם במקום new Form1 תעשה new למחלקה משלך.

                הוא כותב לי את השגיאה הזאת:

                Argument 1: cannot convert from 'NetworkScan.Scanner' to 'System.Windows.Forms.Form'

                פורסם במקור בפורום CODE613 ב23/01/2017 00:02 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  סליחה:

                  [STAThread]
                  static void Main()
                  {
                      Application.EnableVisualStyles();
                      Application.SetCompatibleTextRenderingDefault(false);
                      //Application.Run(new Form1());
                      var myClass = new MyClass();
                  }
                  

                  מה שמפריע לי שהתייחסת לבעיה הזאת כבעיה אובייקטיבית כל כך עד שסברת שלכן נועדו סרביסים. באמת! למה שתוכנה ללא תצוגה לא תוכל לעשות מה שתוכנה עם תצוגה עושה בלי בעיות?
                  סרויסים נועדו לרוץ אחד פר מכונה (ולא פר משתמש), בהרשאות מנהל, ועוד כמה הבדלים. השיקולים בשימוש סרויס בד"כ הם הרשאות.
                  אין שום בעיה שתשתמש בסרויס אבל הוא טיפה מסובך - מחייב התקנה וכל זה.

                  פורסם במקור בפורום CODE613 ב23/01/2017 21:00 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  1
                  • A מנותק
                    A מנותק
                    avr416
                    כתב ב נערך לאחרונה על ידי
                    #9

                    אוי, דוד אתה כנראה מחזיק ממני יותר מדי :smile:
                    אני עדיין בור ועם הארץ, וסה"כ יודע לכתוב קצת קוד..
                    סה"כ מחיפוש בסטאק וגוגל היה נראה לי שהתשובה היא סרוויס..
                    אבל אתה צודק, באמת הרבה יותר פשוט לתת תוכנה בלי UI מאשר להתקין סרביס, אבל על הדרך הרווחנו שלמדנו מה זה הסרביס הזה.

                    בכל אופן - תודה עצומה על כל העזרה!!
                    אברהם

                    פורסם במקור בפורום CODE613 ב23/01/2017 22:14 (+02:00)

                    תגובה 1 תגובה אחרונה
                    0
                    • A מנותק
                      A מנותק
                      avr416
                      כתב ב נערך לאחרונה על ידי
                      #10

                      כתבתי ככה, זה אכן לא זורק שום שגיאה, אבל התכנה מסיימת את פעולתה מיד 😢

                      [STAThread]
                              static void Main()
                              {
                                  Application.EnableVisualStyles();
                                  Application.SetCompatibleTextRenderingDefault(false);
                                  Scanner app = new Scanner(new DateTime(2017, 1, 23, 23, 0, 0), new DateTime(2017, 1, 24, 6, 0, 0));
                              }
                      

                      פורסם במקור בפורום CODE613 ב23/01/2017 22:23 (+02:00)

                      תגובה 1 תגובה אחרונה
                      0
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        כתב ב נערך לאחרונה על ידי
                        #11

                        אויש אתה צודק, סליחה.
                        אתה צריך לשים את הApplication.Run הרי זו המתודה ש"תוקעת" את התוכנה עד לסגירתה.
                        שים את זה שורה אחרי הscaner שלך. ללא פרמטרים. הסיבה שהמלחקה שלך תעבוד אפי' שזה תקוע היא כי זה טיימר וזה על טריד אחר.

                        פורסם במקור בפורום CODE613 ב23/01/2017 23:44 (+02:00)

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        2
                        • A מנותק
                          A מנותק
                          avr416
                          כתב ב נערך לאחרונה על ידי
                          #12

                          מעולה!!
                          עובד מצויין!!
                          תודה רבה רבה.

                          פורסם במקור בפורום CODE613 ב24/01/2017 00:28 (+02:00)

                          תגובה 1 תגובה אחרונה
                          0

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום