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

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

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

c# | עזרה ב progressBar

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

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

    yossizY רחמיםר 2 תגובות תגובה אחרונה
    0
    • yossizY מנותק
      yossizY מנותק
      yossiz
      השיב לנ נח ב נערך לאחרונה על ידי
      #2

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

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

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

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

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

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

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

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

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

        dovidD תגובה 1 תגובה אחרונה
        4
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לclickone ב נערך לאחרונה על ידי
          #4

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

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

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

          yossizY תגובה 1 תגובה אחרונה
          5
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לdovid ב נערך לאחרונה על ידי
            #5

            @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#:

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

            upsilon01U תגובה 1 תגובה אחרונה
            5
            • upsilon01U מנותק
              upsilon01U מנותק
              upsilon01
              השיב לyossiz ב נערך לאחרונה על ידי upsilon01
              #6

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

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

              yossizY תגובה 1 תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לupsilon01 ב נערך לאחרונה על ידי
                #7

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

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

                dovidD תגובה 1 תגובה אחרונה
                2
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  השיב לנ נח ב נערך לאחרונה על ידי רחמים
                  #8

                  @נ-נח ב 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
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לyossiz ב נערך לאחרונה על ידי dovid
                    #9

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

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

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

                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD dovid העביר נושא זה מ-תכנות ב-

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

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

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