第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

C# WinForms 嘗試使用計(jì)時(shí)器更新 UI 但不會(huì)降低性能

C# WinForms 嘗試使用計(jì)時(shí)器更新 UI 但不會(huì)降低性能

C#
慕妹3146593 2021-06-29 17:08:31
所以目前我有一個(gè)有 2 個(gè)進(jìn)程的應(yīng)用程序。一個(gè)進(jìn)程是 ping,而 ping 進(jìn)程是將結(jié)果寫入數(shù)組。另一個(gè)過(guò)程是使用計(jì)時(shí)器每秒更新 UI。更準(zhǔn)確地說(shuō),正在更新的是一個(gè)mschart。這就是我設(shè)置計(jì)時(shí)器的方式:readonly System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();myTimer.Interval = 1000;myTimer.Tick += WriteFunction;現(xiàn)在這是我每秒調(diào)用的方法以刷新 UI/實(shí)際圖形: private void WriteFunction(object objectInfo, EventArgs e)        {            foreach (NetPinger.source.AddGraph b in graphList)            {                b.fileRead();            }        }更新圖表的方法在另一個(gè)類中,如下所示:    public void fileRead()    {        double unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;        chart_holder.Series[0].Points.Clear();        for (double i = unixTimestamp; unixTimestamp - graphSizing < i; i--)        {            bool exists;            try            {                exists = Array.Exists(file, element => element.XValue == i);                exists = true;            }            catch            {                exists = false;            }            try            {                if (exists == false)                {                    DataPoint point = new DataPoint(i, 0);                    chart_holder.Series[0].Points.Add(point);                }                else                {                    DataPoint point = Array.Find(file, element => element.XValue == i);                    chart_holder.Series[0].Points.Add(point);                }            }            catch(Exception ex)            {                MessageBox.Show(Convert.ToString(ex));            }        }    }現(xiàn)在我注意到的是,如果 graphSizing(我循環(huán)通過(guò)的數(shù)字)保持在較低水平,則性能會(huì)很好,并且一切都是同步的(來(lái)自 UI 的多個(gè)圖形同時(shí)更新等),就像它應(yīng)該的那樣。但是,一旦我上升,讓我們說(shuō)喜歡 50 甚至 250(目標(biāo)應(yīng)該是什么),UI 和圖形更新就會(huì)非常非常緩慢。它只是每 3 秒更新一次,并且用戶界面通常非常滯后和緩慢。有沒有人有任何建議我如何保持良好的性能,或者我搞砸了 UI 太慢?如有更多問(wèn)題或更多詳細(xì)信息,請(qǐng)隨時(shí)提問(wèn)。
查看完整描述

1 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊

您的代碼始終在 UI 線程中運(yùn)行,因?yàn)?code>System.Windows.Forms.Timer在 UI 線程上調(diào)用委托。即使情況并非如此(并且您使用 System.Timer 代替),您也可以通過(guò) Invoke 調(diào)用將所有內(nèi)容委托回 UI。您需要確保首先在另一個(gè)線程上準(zhǔn)備數(shù)據(jù),并在 UI 線程本身中盡可能少做。


查看完整回答
反對(duì) 回復(fù) 2021-07-10
  • 1 回答
  • 0 關(guān)注
  • 211 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)