WinForm 實現包括同時執行乙個方法 5 次。 10

發布 科技 2024-08-16
22個回答
  1. 匿名使用者2024-02-01

    首先,我會告訴你,它肯定比 5 秒慢。 多執行緒不是程式優化,如果程式邏輯或記憶體分配本身有問題,則無法通過多執行緒來改變效能。

    可以理解為,在單執行緒的情況下,任務是排隊逐個執行的,而在多執行緒的情況下,多個任務是輪流執行的,任務的每個部分執行完畢後,替換另乙個部分,直到完成。 因此,效能並沒有提高多少,甚至更慢(花在任務管理上)。 但需要注意的是,多執行緒不是先進先出,即使是同乙個任務,也可能先完成,所以要注意限制執行緒的開啟。

    Form 中多執行緒的優點是避免了由於後台邏輯執行時間長而導致的介面卡頓問題(介面繪製和後台邏輯使用乙個執行緒,排隊,因此假死)。 良好的使用者體驗。

    如果同時執行多次資料任務,則一次啟動乙個執行緒,最好使用執行緒池。 如果沒有,只需使用 1 個執行緒,在前台顯示提示框或進度條就足夠了。

  2. 匿名使用者2024-01-31

    多執行緒有其優點,今天的計算機是多核的,如果只有乙個執行緒,那麼其他核心要做什麼? 如果編寫器只考慮單執行緒,那麼計算機將無法為您分配任務給其他核心,如果它是多執行緒的,則計算機將能夠併發執行。 雖然多執行緒開銷很大,可能比原來的慢,但如果任務很多,它仍然值得使用。

    在您的情況下,總共 5 秒後,切換到多執行緒可能並不明顯。 建議採用兩種改進方法。

    1.使用非同步執行緒類似於特殊的多執行緒,只不過只有乙個多執行緒。 這種方法不會提高執行效率,但會改善使用者體驗。

    也就是說,按下按鈕後,介面不會死在那裡,主線程負責使用者響應,子執行緒做主邏輯,5s後結果會放到介面上。 使用者不會下意識地感受到漫長的等待。

    2.改進邏輯以提高效率。 為什麼是5次?

    提高效率的原則是將週期向後移動。 所謂前後,UI是前面,服務是中間,db是後面,因為迴圈需要額外的開銷,所以如果把迴圈放到db上,是最快的。 如果你能做到,那麼執行時間進入 3s 應該不是什麼大問題。

    您最好能夠根據選項 2 進行改進,如果沒有,您可以將其與選項 1 結合使用

  3. 匿名使用者2024-01-30

    它肯定要慢得多,但我認為您可以考慮使用預取資料來避免多次查詢,或者使用批量提交。

    如果需要將資料視為上次更改的結果,則意味著每個更改都將因上次更改而更改。 然後使用資料集。

    批量提交和預讀資料很好,我們過去一次有 1000 次提交。

  4. 匿名使用者2024-01-29

    只有一種方法,5 執行緒調諧,甚至更慢。

    主線程調優需要5秒,現在分成5個執行緒,每個執行緒的CPU變小了,每個執行緒大於5秒。

  5. 匿名使用者2024-01-28

    有很多方法,可以取硬碟或網絡卡號,然後生成乙個加密字串,可以儲存在檔案或資料庫中,或者是軟體的某個功能的命令,當然,這個指令只有你或者你通知的人知道,比如按F5或者其他啟用這個指令來識別是不是你獲得了加密的電腦。

  6. 匿名使用者2024-01-27

    根據當前機器的MAC位址編寫驗證程式。

  7. 匿名使用者2024-01-26

    int i= 0;

    form lode()

    private void timer1_tick(object sender, eventargs e)

    將時間間隔設定為 1000 一秒,大概就是這個東西吧!

  8. 匿名使用者2024-01-25

    在指定的時間間隔後引發的事件。

    private void timer2_tick(object sender, eventargs e)

  9. 匿名使用者2024-01-24

    1.在實現中,不要使用 Get All Current Processes,因為該程序可以重新命名,使用 win api findwindow,然後使用 window 類名來查詢程序。

    2.因為。 .NET 本身無法實現全域性系統鉤子,如果要使用全域性系統鉤子,需要使用 C++ 實現,然後使用 C 呼叫,建議使用 WindowsSerivce+WinAPI(findWindow) 來實現。

  10. 匿名使用者2024-01-23

    獲取所有當前程序。 根據程序名稱確定是否啟用它。

  11. 匿名使用者2024-01-22

    要麼做服務。

    要麼做乙個全域性鉤子

    詳細**,估計不會出現。

  12. 匿名使用者2024-01-21

    如果將異常處理新增到 a1() 中,則異常處理僅返回到 a1() 的上層,即 a()。

    由於 a1() 已經處理了異常,因此 a() 層沒有異常,因此程式繼續,因此 a2 和 a3 將繼續執行。

    如果要中止 a2 和 a3,則必須將異常處理寫入呼叫它們的函式中,即 a()。

  13. 匿名使用者2024-01-20

    使用子執行緒,在主線程中實現。

  14. 匿名使用者2024-01-19

    寫乙個服務,記錄上次關機時間、使用者名稱,然後下次啟動電腦時,讀取使用者名稱、上次關機時間,如果在10分鐘內,鎖定電腦,不在那裡,正常使用。

  15. 匿名使用者2024-01-18

    寫入日誌。 在執行每個操作之前記錄狀態,以及執行之後執行的操作。 然後,您可以依次撤銷它們。 資料庫具有此類日誌。 這似乎很複雜。 如果只是撤消文字。 想想吧。

    首先,插入文字,並記錄插入的每個字元和位置,並且可以撤消。

    刪除文字,記錄位置和字元,即可恢復。

    替換,可以認為是先刪除後插入。

    試一試。 我也沒有做過。

  16. 匿名使用者2024-01-17

    如果要使此專案或其他專案的所有 winform 表單都具有相同的顏色,可以自定義乙個表單,對其進行布局,然後其他表單繼承該表單。 至於需要改變顏色,只需改變表格的顏色即可。

  17. 匿名使用者2024-01-16

    嘗試在表單的表單關閉或表單關閉事件中寫 **。

  18. 匿名使用者2024-01-15

    xmandlp |第 4 級。

    嘗試在表單的表單關閉或表單關閉事件中寫 **。

    說得對。

  19. 匿名使用者2024-01-14

    有一些事件,例如關閉關閉,您還可以編寫乙個所有頁面都繼承它的表單類。

  20. 匿名使用者2024-01-13

    Form 有乙個稱為 formcloseting 的屬性

    把它放在裡面。

    該屬性表示視窗何時關閉。

  21. 匿名使用者2024-01-12

    無論如何,有乙個事件叫做 formclosed in form。 還有乙個表單關閉。。你可以試試...

  22. 匿名使用者2024-01-11

    讓我們來談談吧!

    您可以捕捉視窗關閉事件。

相關回答
6個回答2024-08-16

在左邊放乙個groupbox,即gpbox選單,將Dock設定在左邊; 放置導航控制項。 >>>More

21個回答2024-08-16

"inset into table_userhis1(username,datetimer)values('@username','@time')"); >>>More

19個回答2024-08-16

最簡單的是,使用路由器,ADSL數據機連線到路由器的WAN埠。 根據說明書配置本地IP,然後通過IE瀏覽器登入路由器... 使用者名稱和密碼。 >>>More

11個回答2024-08-16

只需購買路由器或集線器即可。

7個回答2024-08-16

為什麼是三個功能? 乙個就夠了。