תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    c# | עזרה ב progressBar

    תכנות
    6
    9
    181
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • נ נח
      נ נח נערך לאחרונה על ידי נ נח

      שבוע טוב
      כתבתי פעולת העתקה של file.copy ואני רוצה progressbar שיתקדם לפי קצב ההעתקה.
      ראיתי בגוגל שדיברו על זה בהרבה מקומות אבל לא הצלחתי להבין איך עושים את זה.. תודה רבה

      yossiz רחמים 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • yossiz
        yossiz @נ נח נערך לאחרונה על ידי

        @נ-נח התשובה הקצרה היא שאי אפשר.
        למה? כי הפונקציה File.Copy לא נותנת לנו מידע על ההתקדמות.

        התשובה הארוכה היא שאם אתה ממש רוצה להציג התקדמות תצטרך להשתמש בפונקציה CopyFileEx, אבל זה פונקציה של C - לא של #C. כדי להשתמש בו תצטרך להשתמש באפשרות של #C לקרוא לפונקציות של C שנקרא Pinvoke.
        זה נושא קצת מתקדם.

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה תגובה ציטוט 6
        • clickone
          clickone נערך לאחרונה על ידי

          לחילופין, ואחרי ההצעה המצויינת של @yossiz , מתוכן השאלות הכלליות שלך נראה שמה שאתה מנסה לעשות בסוף התהליך זה מנהל קבצים, ייתכן שקצת יותר מתוחכם מהרגיל ושלא יוכלו לעקוף וכו'

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

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

          אין טסט כמו פרודקשן.

          המייל שלי urivpn@gmail.com

          dovid תגובה 1 תגובה אחרונה תגובה ציטוט 4
          • dovid
            dovid ניהול @clickone נערך לאחרונה על ידי

            יש אפשרות שלישית, לבצע את ההעתקה בC# על ידי קריאה מקובץ המקור וכתיבה לקובץ היעד בזרם, והצגת ההתקדמות, ככה: https://stackoverflow.com/a/22858096/1271037

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

            yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 5
            • yossiz
              yossiz @dovid נערך לאחרונה על ידי

              @dovid ראיתי את הפתרון הזה. משום מה זה מרגיש לי יותר נכון להשתמש ב-API מיועד לכך מאשר לממש בעצמך. אני תמיד מפחד ממצבים לא צפויים, וה-API המיועד יודע לטפל בהם ולפחות לזרוק שגיאות נכונות. חוץ מזה, בד"כ הוא ממוטב בצורה נכונה עבור העתקת קבצים. אני לא יודע אם אני צודק.

              @נ-נח יש עוד פתרון, שזה להשתמש ב-API שנותן לך העתקת הקבצים של סייר ווינדוס עם הצגת התקדמות שלו.
              פרטים כאן:
              https://docs.microsoft.com/en-us/archive/msdn-magazine/2005/february/net-matters-file-copy-progress-custom-thread-pools#main:~:text=you can,c#:

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              upsilon01 תגובה 1 תגובה אחרונה תגובה ציטוט 5
              • upsilon01
                upsilon01 @yossiz נערך לאחרונה על ידי upsilon01

                @yossiz
                אכן, בהעתקה בהעברה של ה windows לא תמיד מתבצעת קריאה וכתיבה של הנתונים
                לפעמים משתנה רק ה entry של הקובץ, כלומר סוג של מצביע למיקום של הקובץ
                ובפתרון של @dovid תמיד מתבצעת קריאה וכתיבה

                עריכה: אכן @yossiz התכוונתי להעברה.

                yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • yossiz
                  yossiz @upsilon01 נערך לאחרונה על ידי

                  @upsilon01 לא הבנתי אותך, אתה מתכוון לכאורה להעברה של קובץ, בהעתקה, במערכת הקבצים NTFS, ככל הידוע לי תמיד מתבצעת קריאה וכתיבה.

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  dovid תגובה 1 תגובה אחרונה תגובה ציטוט 2
                  • רחמים
                    רחמים @נ נח נערך לאחרונה על ידי רחמים

                    @נ-נח ב VB יש את זה מוכן, אז גם ב C# אפשר להשתמש בזה
                    התחביר ב VB:

                    My.Computer.FileSystem.CopyDirectory(X, Y, FileIO.UIOption.AllDialogs)
                    

                    הכתובת המלאה של הפונקציה:

                    Microsoft.VisualBasic.MyServices.FileSystemProxy.CopyDirectory(String, String, UIOption, UICancelOption) 
                    

                    ותוכל לקרוא לפונקציה זו גם בC# על ידי רפרנס לDLL המתאים.

                    יעקובוב פיתוח תוכנה ערוץ היוטיוב | אתר

                    צפו יוונים נקבצו עלי

                    תגובה 1 תגובה אחרונה תגובה ציטוט 5
                    • dovid
                      dovid ניהול @yossiz נערך לאחרונה על ידי dovid

                      @yossiz הוא התכוון בהעברה.
                      (אתה חושב שאני ממליץ על הפתרון שאמרתי? אז תחשוב...).

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

                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • הועבר מ תכנות ע"י  dovid dovid 
                      • 1 / 1
                      • פוסט ראשון
                        פוסט אחרון
                      בא תתחבר לדף היומי!