• <menu id="w2i4a"></menu>
  • logo Fastreport.Net 教程2018(完結(jié))

    文檔首頁(yè)>>Fastreport.Net 教程2018(完結(jié))>>【FastReport教程】介紹C#中的異步編程(上)

    【FastReport教程】介紹C#中的異步編程(上)


    【下載FastReport.Net最新版本】

    很多人都聽(tīng)說(shuō)過(guò)這個(gè),但是很少有人在他們的代碼中使用它。同時(shí),沒(méi)有具有客戶端 - 服務(wù)器架構(gòu)的嚴(yán)肅程序?qū)o(wú)需異步編程。與數(shù)據(jù)庫(kù)交換數(shù)據(jù),客戶端和服務(wù)器的交互 - 這需要時(shí)間,可以由其他進(jìn)程占用而不是等待。

    當(dāng)同步執(zhí)行操作時(shí),該線程被另一個(gè)線程阻塞。我們必須等待第二個(gè)過(guò)程的執(zhí)行才能將控制權(quán)返回給第一個(gè)過(guò)程。這會(huì)導(dǎo)致不必要的資源浪費(fèi),因?yàn)榫哂袉蝹€(gè)任務(wù)的流可以等待很長(zhǎng)時(shí)間來(lái)響應(yīng)。例如,從數(shù)據(jù)庫(kù)或Web服務(wù)。

    如果臨時(shí)資源可以節(jié)省多線程(現(xiàn)代處理器的好處允許它),那么內(nèi)存資源將無(wú)法保存它。畢竟,實(shí)際上,多線程也是同步執(zhí)行的操作。只是他們很少。 真正的解決方案是使用異步處理。通過(guò)這種方法,我們可以使用多個(gè)線程來(lái)控制其中一個(gè)。 也就是說(shuō),在等待來(lái)自另一個(gè)任務(wù)的響應(yīng)時(shí),當(dāng)前的任務(wù)不會(huì)阻塞該線程,而是將其提供給另一個(gè)任務(wù)。

    我們來(lái)看看圖片:

    FastReport

    在這種情況下,使用單線程異步方法。 這里是一個(gè)多線程異步流。

    FastReport

    每個(gè)線程執(zhí)行許多任務(wù)。當(dāng)其中一個(gè)任務(wù)在預(yù)期中停止時(shí),將采取另一個(gè)任務(wù)。因此,任務(wù)從一個(gè)線程流向另一個(gè)線程,具體取決于首先釋放的線程。該圖顯示任務(wù)1在第一個(gè)線程中開始執(zhí)行,在第二個(gè)線程中完成。 讓我們?cè)倏紤]一個(gè)圖 - 序列圖:

    FastReport

    該圖描述了客戶端 - 服務(wù)器應(yīng)用程序的線程行為。客戶端從服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求,而不是“掛起”等待響應(yīng)(如在同步方法中)繼續(xù)工作,為用戶提供另一個(gè)應(yīng)用程序功能。因此,如果您是一名Web開發(fā)人員,那么沒(méi)有異步就無(wú)法做任何事情。 讓我們理解一點(diǎn)。異步編程有三種模式:

    • 異步編程模型(APM)
    • 基于事件的異步模式(EAP)
    • 基于任務(wù)的異步模式(TAP)
    FastReport教程合集
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();