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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
קומפיונטק

קומפיונט

@קומפיונט
אודות
פוסטים
288
נושאים
22
שיתופים
0
קבוצות
0
עוקבים
2
עוקב אחרי
6

פוסטים

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

  • ProgressBar בWPF תוך כדי פעולת thread
    קומפיונטק קומפיונט

    @pcinfogmach כתב בProgressBar בWPF תוך כדי פעולת thread:

    private async void search(string[] files)
    {
        progressBar.Maximum = files.Length;
        List<System.Threading.Tasks.Task> searchTasks = new List<System.Threading.Tasks.Task>();
        foreach (string file in files)
        {
            searchTasks.Add(Task.Run(() =>
            {
                this.Dispatcher.Invoke(() =>
                {
                    progressBar.Value = progressBar.Value + 1;
                    File.ReadAllLines(file);
                });
            }));
        }
        await System.Threading.Tasks.Task.WhenAll(searchTasks);
        progressBar.Value = 0;
    }
    

    למה File.ReadAllLines(file) נמצא בתוך הקריאה ל Dispatcher.Invoke ? תנסה להוציא אותו מחוץ ל Dispatcher, הקריאה אמורה להכיל קוד שמשנה את התצוגה בלבד. הגיוני שהתרד של התצוגה נתקע כי את מריץ עליו עוד לוגיקה שלא קשורה ל UI שיתכן שגוזלת זמן, ובגלל שה UI לא מגיב אתה לא רואה את ההתקדמות. (חוץ מזה שצריך לאפס את progressBar.Value לאפס, מה ש @dovid כתב לך)

    תכנות

  • C# webview2 navigatetostring- טעינת טקסט בפקד
    קומפיונטק קומפיונט

    @dovid כתב בC# webview2 navigatetostring- טעינת טקסט בפקד:

    תקרא לה מייד אחרי הInitializeComponent כדי שזה "יספיק" להיטען,
    או שתוסיף לפניה await (ותוסיף למתודה async).

    או לחילופין תקרא לה ככה: ()EnsureCoreWebView2Async().Wait, זה יעצור את הטרד הנוכחי עד שהפונקציה תסתיים.

    (מומלץ מאוד להשתמש ב async / await)

    תכנות

  • wpf treeview עם scrollBar יותר יפה
    קומפיונטק קומפיונט

    @pcinfogmach כתב בwpf treeview עם scrollBar יותר יפה:

    לא מצאתי משהו שמטפל בscrollbar מישהו מכיר?

    אני רואה לדוג' את הריפו הזה https://github.com/benruehl/adonis-ui נראה בצילום מסך שיש לו scrollbar עם עיצוב דומה למה שאתה מחפש, אני לא התנסיתי אישית וגם אני רואה שהריפו לא פעיל כמה שנים, אבל אולי זה יכול לעזור לך.

    ובהמשך למה ש @dovid כתב, באמת לא כדאי לעבוד על כל פקד, אבל אם זה משהו שמפריע לך רק ב scrollbar אז אולי עדיף לקחת איזה ריפו שמכיל עיצוב שאתה אוהב ולעשות copy-paste ולשלב לתוך הפרויקט שלך.

    תכנות

  • mvvm בc# wpf
    קומפיונטק קומפיונט

    אני לא יודע אם אני מכוון בדיוק להגדרה, אבל MVVM זה אוסף של כללים ושיטות לפיתוח תוכנה עם ממשק משתמש, זה מתחלק לשלוש חלקים: 1) Model - זה החלק שמחזיק את הנתונים והלוגיקה, 2) View - זה התצוגה, 3) ViewModel זה החלק שמתווך בין ה - View ל - Model, מה שאני מרוויח פה זה שאין קשר הדוק בין ה - View ל - Model, אלא הוא נעשה על ידי מתווך שלישי (ViewModel) שנותן דרך מאוד ברורה איך לעשות את זה (Bindings ו - Commands), המטרה העיקרית של MVVM זה להפריד את הלוגיקה של התוכנה מה UI, אבל יש לו עוד יתרונות, ביניהם: עבודה נוחה עם הזרקת תלות (DependencyInjection), אפשר לעשות טסטים יותר בקלות (כי לא צריך להפעיל את ה - View), ועוד..

    תכנות

  • יצירת קובץ exe יחיד לאחר הקימפול בויזו'אל סטודיו
    קומפיונטק קומפיונט

    @מוטי-מן כתב ביצירת קובץ exe יחיד לאחר הקימפול בויזו'אל סטודיו:

    איך אני עושה את זה? לא מצאתי דבר כזה בממשק הגרפי

    למקרה שעדין לא הצלחת, תתחיל מה ש @dovid כתב, ואח"כ:
    1.png 2.png 3.png 5.png 6.png 7.png

    תכנות

  • שאלה בwpf האם יש דרך להסיר את הצל שסביב האובייקט window
    קומפיונטק קומפיונט

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

    תכנות

  • עזרה בקוד C# wpf
    קומפיונטק קומפיונט

    הוספה שאולי תעזור, אם רוצים לקבל את ה - ActualHeight לפני הרנדור הראשוני אפשר לחשב אותו ידנית על ידי קריאה ל - Measure ולאחר מכן המאפיין DesiredSize יכיל את הגודל הרצוי.

    תכנות

  • מה ההבדל בין שני סוגי הפרויקטים הללו בויז'ואל סטודיו?
    קומפיונטק קומפיונט

    @חגי האם אתה היית ממליץ למי שכבר מפתח לווינדוס ב NET Core. לעבור ל NET Framework.?

    תכנות

  • מה ההבדל בין שני סוגי הפרויקטים הללו בויז'ואל סטודיו?
    קומפיונטק קומפיונט

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

    (WinForm @pcinfogmach פחות מעניין אותי, אבל תן לי לדוגמא פקד שקיים רק ב framework, גם זה נשמע לי מוזר..)

    תכנות

  • יצירת קובץ exe יחיד לאחר הקימפול בויזו'אל סטודיו
    קומפיונטק קומפיונט

    @dovid התכוונתי לאפוקי NET Framework.
    (NET Core. עבר שינוי השם ל NET. בגרסה 5)

    תכנות

  • מה ההבדל בין שני סוגי הפרויקטים הללו בויז'ואל סטודיו?
    קומפיונטק קומפיונט

    @dovid כתב במה ההבדל בין שני סוגי הפרויקטים הללו בויז'ואל סטודיו?:

    אז אני לא יודע בדיוק מה הייתרון לפתח ב.net core.

    אפשר לשאול הפוך: מה היתרון לפתח ב net framework?

    תכנות

  • יצירת קובץ exe יחיד לאחר הקימפול בויזו'אל סטודיו
    קומפיונטק קומפיונט

    @מוטי-מן כתב ביצירת קובץ exe יחיד לאחר הקימפול בויזו'אל סטודיו:

    בכל אופן, כשאני מעתיק את הקובץ exe לבדו מהפרויקט שבתמונה לעיל זה לא עובד

    אתה צריך גם את ה dll עם אותו שם, ככה זה עובד ב NET., (הקוד שלך נמצא רק ב dll ולא ב exe) אם אתה רוצה לפרסם כקובץ אחד, זה אפשרי ברוב המקרים (אם אין תלות לא מנוהלת) על ידי המאפיין PublishSingleFile, בשורת הפקודה זה משהו כזה dotnet publish .. /p:PublishSingleFile=true ויש גם אפשרות בממשק של ויז'ואל סטודיו.

    תכנות

  • #C | הטמעת ממשקי COM במצב NativeAOT‏
    קומפיונטק קומפיונט

    לאחר הרבה ניסיונות מצאתי בס"ד את הדרך ליישם את זה, אני שם את זה פה אם למישהו זה יהיה שימושי בעתיד.

    א. הוספתי מחלקת עזר שתייצר ממשקי COM כדלהלן:

    public static partial class ComActivator
    {
        [LibraryImport("ole32")]
        private static partial int CoCreateInstance(
            ref Guid clsid,
            nint pUnkOuter,
            int dwClsContext,
            ref Guid iid,
            [MarshalAs(UnmanagedType.Interface)] out object pObj
        );
    
        public static TInterface ActivateClass<TInterface>(Guid clsid, Guid iid)
        {
            Debug.Assert(iid == typeof(TInterface).GUID);
    
            var hResult = CoCreateInstance(ref clsid, default, 1, ref iid, out var obj);
    
            if (hResult < 0)
            {
                Marshal.ThrowExceptionForHR(hResult);
            }
    
            return (TInterface)obj;
        }
    }
    

    ב. למחלקה ITaskbarList3 הוספתי את התכונה GeneratedComInterface

    ג. ככה אני מקבל את האובייקט:

    var clsid = Guid.Parse("56FDF344-FD6D-11D0-958A-006097C9A090"); // TaskBarList
    var iid = Guid.Parse("EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF"); // ITaskBarList3
    
    var taskbar = ComActivator.ActivateClass<ITaskbarList3>(clsid, iid);
    

    קישור שעזר לי: https://learn.microsoft.com/en-us/dotnet/standard/native-interop/tutorial-comwrappers

    נ.ב. מצאתי עוד פתרון עם ComWrappers אבל הפתרון הראשון עובד מצויין אז השתמשתי בו.

    תכנות

  • קוד באט לסגירת תוכנית
    קומפיונטק קומפיונט

    @קו-כשר-מערכות-טל כתב בקוד באט לסגירת תוכנית:

    אגב לפי מה שידוע לי כן אפשר לגשת למנהל המשימות על ידי הצרוף Ctrl+Alt+Delete

    נכון, אבל התוכנה סוגרת את זה ישר אחרי שזה נפתח, ואגב אפשר לפתוח גם עם Crtl+Shift+Esc.

    @אוריי כתב בקוד באט לסגירת תוכנית:

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

    אם אתה רוצה גישה למנהל המשימות בחדר מחשבים, אתה יכול להוריד את systeminformer.

    תוכנה

  • #C | הטמעת ממשקי COM במצב NativeAOT‏
    קומפיונטק קומפיונט

    @חגי כתב ב#C | הטמעת ממשקי COM במצב NativeAOT‏:

    בסוף אחד הקישורים הם מציינים בהקשר הזה שהם מתחילים להוסיף תמיכה לcode generator עבור רכיבי COM, ניסית לבדוק אם זה פותר את השגיאה?
    https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8#source-generated-com-interop

    ניסיתי גם את זה ונשאר עם אותה שגיאה (זה מגנרט קוד, אבל ב-native-aot זה זורק אותו חריג), אולי לא ממשתי את זה נכון (יש דרך אחרת לקבל מופע של ממשק COM?)

    static partial class Taskbar
    {
        [GeneratedComInterface]
        [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        [Guid("EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF")]
        public partial interface ITaskbarList3
        {
            // ITaskbarList
            [PreserveSig] void HrInit();
            [PreserveSig] void AddTab(IntPtr hwnd);
            [PreserveSig] void DeleteTab(IntPtr hwnd);
            [PreserveSig] void ActivateTab(IntPtr hwnd);
            [PreserveSig] void SetActiveAlt(IntPtr hwnd);
    
            // ITaskbarList2
            [PreserveSig] void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen);
    
            // ITaskbarList3
            [PreserveSig] void SetProgressValue(IntPtr hwnd, ulong ullCompleted, ulong ullTotal);
            [PreserveSig] void SetProgressState(IntPtr hwnd, int state);
        }
    
        [ComImport]
        [GeneratedComClass]
        [ClassInterface(ClassInterfaceType.None)]
        [Guid("56FDF344-FD6D-11d0-958A-006097C9A090")]
        public partial class TaskBarCommunication { }
    }
    
    תכנות

  • #C | הטמעת ממשקי COM במצב NativeAOT‏
    קומפיונטק קומפיונט

    @dovid לא שמתי לב שזה כתוב שם, אבל אני יודע שאפשר ליישם ממשקי COM ב native-aot, בדקתי את קוד המקור של avalonia שתומכת ב native-aot באופן מלא, וראיתי שהם פיתחו תת פרויקט (MicroCom) שמחולל קוד לממשקי COM מקבצי idl. לא התעמקתי בזה כ"כ כי אני לא מכיר קבצי idl, בתכלס אני שואל מה הדרך הכי קלה ליישם ממשקי COM עם או בלי מיקרוסופט?

    תכנות

  • #C | הטמעת ממשקי COM במצב NativeAOT‏
    קומפיונטק קומפיונט

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

    תכנות

  • #C | הטמעת ממשקי COM במצב NativeAOT‏
    קומפיונטק קומפיונט

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

    אני לוקח לדוגמא את הקוד הבא:

    using System.Runtime.InteropServices;
    using static Taskbar;
    
    try
    {
        var taskbar = (ITaskbarList3)new TaskBarCommunication();
    
        Console.WriteLine("COM interface created successfully");
    }
    catch (Exception exception)
    {
        Console.WriteLine($"Error at creating COM interface: {exception}");
    }
    
    Console.ReadLine();
    
    static class Taskbar
    {
        [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
        [Guid("EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF")]
        public interface ITaskbarList3
        {
            // ITaskbarList
            [PreserveSig] void HrInit();
            [PreserveSig] void AddTab(IntPtr hwnd);
            [PreserveSig] void DeleteTab(IntPtr hwnd);
            [PreserveSig] void ActivateTab(IntPtr hwnd);
            [PreserveSig] void SetActiveAlt(IntPtr hwnd);
    
            // ITaskbarList2
            [PreserveSig] void MarkFullscreenWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.Bool)] bool fFullscreen);
    
            // ITaskbarList3
            [PreserveSig] void SetProgressValue(IntPtr hwnd, ulong ullCompleted, ulong ullTotal);
            [PreserveSig] void SetProgressState(IntPtr hwnd, int state);
        }
    
        [ComImport]
        [ClassInterface(ClassInterfaceType.None)]
        [Guid("56FDF344-FD6D-11d0-958A-006097C9A090")]
        public class TaskBarCommunication { }
    }
    

    קובץ הפרויקט:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net8.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <PublishAot>true</PublishAot>
        <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
      </PropertyGroup>
    </Project>
    

    כשאני מריץ עם: dotnet run זה רץ בלי בעיות, אבל כשאני מקמפל עם dotnet publish זה זורק את החריג הבא:

    System.InvalidProgramException: Common Language Runtime detected an invalid program. The body of method 'Void TaskBarCommunication..ctor()' is invalid.
       at Internal.Runtime.TypeLoaderExceptionHelper.CreateInvalidProgramException(ExceptionStringID, String) + 0x40
       at Internal.Runtime.CompilerHelpers.ThrowHelpers.ThrowInvalidProgramExceptionWithArgument(ExceptionStringID, String) + 0x9
       at ComWithNativeAotSample.Taskbar.TaskBarCommunication..ctor() + 0x15
       at Program.<Main>$(String[] args) + 0x34
    

    משהו יכול להסביר לי איך אני אמור לשנות את הקוד כדי שזה יעבוד עם native-aot?

    תכנות

  • קוד נגדי קצר
    קומפיונטק קומפיונט

    @WWW במקרה שלך זה בלתי אפשרי לייצר מספר בן 10 ספרות ממספר בן 5 ספרות.

    הפתרון הוא שהקוד הנגדי יהיה באורך של 8 ספרות (זהה לאורך של מספר פלא' חוץ מהקידומת הקבועה 05, כמו שכתבו פה) ואז להפוך את המספר פלאפון איכשהו (xor לדוגמא) לקוד הנגדי, ובאותה דרך לשחזר למספר הפלאפון שהמשתמש הזין.

    תכנות
  • 1
  • 2
  • 5
  • 6
  • 7
  • 8
  • 9
  • 14
  • 15
  • 7 / 15
  • התחברות

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

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