欧美日韩亚-欧美日韩亚州在线-欧美日韩亚洲-欧美日韩亚洲第一区-欧美日韩亚洲二区在线-欧美日韩亚洲高清精品

金喜正规买球

如何解決窗體假死

轉帖|其它|編輯:郝浩|2011-04-11 14:44:55.000|閱讀 2027 次

概述:在之前的《創建無阻塞的異步調用》中,已經介紹過異步調用的編寫步驟和實施原理。異步調用是CLR為開發者提供的一種重要的編程手段,它也是構建高性能、可伸縮應用程序的關鍵。在多核CPU越來越普及的今天,異步編程允許使用非常少的線程執行很多操作。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

引言

  在之前的《創建無阻塞的異步調用》中,已經介紹過異步調用的編寫步驟和實施原理。異步調用是CLR為開發者提供的一種重要的編程手段,它也是構建高性能、可伸縮應用程序的關鍵。在多核CPU越來越普及的今天,異步編程允許使用非常少的線程執行很多操作。我們通常使用異步完成許多計算型、IO型的復雜、耗時操作,去取得我們的應用程序運行所需要的一部分數據。在取得這些數據后,我們需要將它們綁定在UI中呈現。當數據量偏大時,我們會發現窗體變成了空白面板。此時如果用鼠標點擊,窗體標題將會出現”失去響應”的字樣,而實際上UI線程仍在工作著,這對用戶來說是一種極度糟糕的體驗。如果你希望了解其中的原因(并不復雜:)),并徹底解決該問題,那么花時間讀完此文也許是個不錯的選擇。

  一般來說,窗體阻塞分為兩種情況。一種是在UI線程上調用耗時較長的操作,例如訪問數據庫,這種阻塞是UI線程被占用所導致,可以通過delegate.BeginInvoke的異步編程解決;另一種是窗體加載大批量數據,例如向ListView、DataGridView等控件中添加大量的數據。本文主要探討后一種阻塞。

基礎理論

  這部分簡單介紹CLR對跨線程UI訪問的處理。作為基礎內容,相信大部分.NET開發者對它并不陌生,讀者可根據實際情況略過此處。

控件的線程安全檢測

  在傳統的窗體編程中,UI中的控件元素與其他工作線程互相隔離,每次我們訪問一個UI控件,實際上都是在UI線程中進行。如果嘗試在其他線程中訪問控件,CLR針對不同的.NET Framework版本,會有不同的處理。在Framework1.x中,CLR允許應用程序以跨線程的方式運行,而在Framework2.0及以后版本中,System.Windows.Form.Control新增了CheckForIllegalCrossThreadCalls屬性,它是一個可讀寫的bool常量,標記我們是否需要對非UI線程對控件的調用做出檢測。如果指定true,當以其他線程訪問UI,CLR會跑出一個”InvalidOperationException:線程間操作無效,從不是創建控件***的線程訪問它”;如果為false,則不對該錯誤線程的調用進行捕獲,應用程序依然運行。

  在Framework1.x版本中,這個值默認是false。問什么之后的版本會加入這個屬性來約束我們的UI呢?實際上官方對此的解釋是當有多個并發線程嘗試對UI進行讀寫時,容易造成線程爭用資源帶來的死鎖。所以,CLR默認不允許以非UI線程訪問控件。

  然而,我們常常需要在窗體中使用異步線程來處理一些操作,例如IO和Socket通訊等。這時跨線程的UI訪問又是必須的,對此,.NET給我們的補充方案就是Control的Invoke和BeginInvoke。

Control的Invoke和BeginInvoke

對于這兩個方法,首先我們要有以下的認識:

1.Control.Invoke,Control.BeginInvoke和delegate.Invoke,delegate.BeginInvoke是不同的。
2.Control.Invoke中的委托方法,執行在主線程,也就是我們的UI線程。而Control.BeginInvoke從命名上來看雖然具有異步調用的特征(Begin),但也仍然執行在UI線程。
3.如果在UI線程中直接調用Invoke和BeginInvoke,數據量偏大時,依然會造成UI的假死。

  有很多開發者在初次接觸這兩個函數時,很容易就將它們同異步聯系起來、有些人會認為他們是獨立于UI線程之外的工作線程,實際上,他們都被這兩個函數的命名所蒙蔽了。如果以傳統調用異步的方式,直接調用Control.BeginInvoke,與同步函數的執行無異,UI線程還是會處理所有辛苦的操作,造成我們的應用程序阻塞。

  Control.Invoke的調用模型很明確:在UI線程中以代碼順序同步執行,因此,拋開工作線程調用UI元素的干擾,我們可以將Control.Invoke視為同步,本文不做過多介紹。

  很多開發者在接觸異步后,再來處理窗體假死的問題,很容易想當然的將Control.BeginInvoke視為WinForm封裝的異步。所以我們重點關注這個方法。

體驗BeginInvoke

  前面說過,BeginInvoke除了命名上來看像異步,其實很多時候我們調用起來根本沒有異步的”非阻塞”特性,我用下面這個例子簡單的嘗試一次對BeginInvoke的調用。

  如你所見,我現在創建了一個簡陋的Form,其中放置了一個Lable控件lable1,一個Button控件btn_Start,下面,開始code:

private void btn_Start_Click(object sender, EventArgs e)
{
// 儲存UI線程的標識符
int curThreadID = Thread.CurrentThread.ManagedThreadId;

new Thread((ThreadStart)delegate()
{
PrintThreadLog(curThreadID);
})
.Start();
}

private void PrintThreadLog(int mainThreadID)
{
// 當前線程的標識符
// A代碼塊
int asyncThreadID = Thread.CurrentThread.ManagedThreadId;

// 輸出當前線程的扼要信息,及與UI線程的引用比對結果
// B代碼塊
label1.BeginInvoke((MethodInvoker)delegate()
{
// 執行BeginInvoke內的方法的線程標識符
int curThreadID = Thread.CurrentThread.ManagedThreadId;

label1.Text = string.Format("Async Thread ID:{0},Current Thread ID:{1},Is UI Thread:{2}",
asyncThreadID, curThreadID, curThreadID.Equals(mainThreadID));
});

// 掛起當前線程3秒,模擬耗時操作
// C代碼塊
Thread.Sleep(3000);
}

  這段代碼在新的線程中訪問了UI,所以我們使用了label1.BeginInvoke函數。新的線程中,我們取得了當前工作線程的線程標識符,也取得了BeginInvoke函數內的線程。然后,將它與UI線程的標志符作比對,將結果輸出于Label1控件上。最后,我們掛起當前工作線程3秒,用于模擬一些常見的耗時操作。

  為了便于區分,我們將這段代碼分為A、B、C三個代碼塊。

運行結果:

我們能得到以下結論:

●PrintThreadLog函數主體(A、C代碼塊)執行在新的線程,它執行了不被BeginInvoke所包含的其他代碼。
●當我們調用了Control.BeginInvoke之后,線程調度權回歸到了UI線程。也就是說,BeginInvoke內部的代碼(B代碼塊)均執行在UI線程。
●在UI線程執行BeginInvok中封裝的代碼時,工作線程內的剩余代碼(C代碼塊)同時進行。它與BeginInvoke中的UI線程并行執行,互不干擾。
●由于Thread.Sleep(3000)是隔離在UI線程外的工作線程,因此這行代碼帶來的線程阻塞實際上阻塞了工作線程,不會給UI帶來任何影響。

Control.BeginInvoke的真正含義

  既然Control.BeginInvoke其中的委托函數仍執行在UI線程內,那這個”異步”到底指的是什么?話題回到本文最初:我們在上文已經提到了”控件的線程安全檢測”概念,相信大家對這種工作線程內調用Control.BeginInvoke的做法已經太熟悉了。我們也提到了”CLR不喜歡工作線程調用UI元素”。微軟的決心如此之大,以至于CLR團隊在.NET Framework2.0中添加了CheckForIllegalCrossThreadCalls和Control.Invoke、Control.BeginInvoke方法。這是一次相當重大的改革,CLR團隊希望達到這樣的效果:

  如果不申明CheckForIllegalCrossThreadCalls = false;這樣的”不安全”代碼,你就只能使用Control.Invoke和Control.BeginInvoke;而只要使用后兩者,不論它們的上下文運行環境是其它工作線程還是UI線程,它們封裝的代碼都會執行在UI線程內。所以,msdn對Control.BeginInvoke給出了這樣的解釋:在創建控件的基礎句柄所在線程上異步執行指定委托。

  它的真正含義是:BeginInvoke所謂的異步,是相對于調用線程的異步,而不是相對于UI線程的異步。

  CLR把Control.BeginInvoke(delegate method)中的異步函數執行在UI內,如果你像我上文那樣用新線程調用BeginInvoke,那么method相對于這個新線程內的其他函數是異步的。畢竟method執行在了UI線程,新線程立即回調,不必等待Control.BeginInvoke的完成。所以,這個后臺線程充分享受了”異步”的好處,不再阻塞,只是我們看不到而已;當然,如果你在BeginInvoke內執行一段耗時的代碼,無論是從遠程服務器獲取數據庫資料、IO讀取,還是在控件內加載一大批數據,UI線程還是阻塞的。

  正如傳統的Delegate.BeginInvoke的異步工作線程取自于.NET線程池,Control.BeginInvoke的異步工作線程就是UI線程。

  現在您明白兩種BeginInvoke的區別了嗎?

Control.Invoke、BeginInvoke與Windows消息

  實際上,Invoke和BeginInvoke的原理是將調用的方法Marshal成消息,然后調用Win32Api的RegisterWindowMessage()向UI發送消息。我們使用Reflector,可以看到以下代碼:

Control.Invoke:

public object Invoke(Delegate method, params object[] args)
{
using (new MultithreadSafeCallScope())
{
return this.FindMarshalingControl().MarshaledInvoke(this, method, args, true);
}
}

Control.BeginInvoke:

[EditorBrowsable(EditorBrowsableState.Advanced)]
public IAsyncResult BeginInvoke(Delegate method, params object[] args)
{
using (new MultithreadSafeCallScope())
{
return (IAsyncResult)this.FindMarshalingControl().MarshaledInvoke(this, method, args, false);
}
}

  在以上代碼中我們看到Control.Invoke和BeginInvoke的不同之處,在于調用MarshaledInvoke時,Invoke向最后一個參數傳遞了false,而BeginInvoke則是true。

MarshaledInvoke的結構是這樣的:

private object MarshaledInvoke(Control caller, Delegate method, object[] args, bool synchronous)

  很明顯,最后一個參數synchronous表示是否按照同步處理。MarshaledInvoke內部這樣處理這個參數:

if (!synchronous)
{
return entry;
}
if (!entry.IsCompleted)
{
this.WaitForWaitHandle(entry.AsyncWaitHandle);
}

  所以,BeginInvoke的處理就是直接回調,Invoke卻在等待異步函數執行完后,才繼續執行。

  到此為止,Invoke和BeginInvoke的工作就結束了,其余的工作就是UI對消息的處理,它由Control的WndProc(ref Message m)來執行。消息處理到底會給我們的UI帶來什么樣的影響?接著來看Application.DoEvents()函數。

Application.DoEvents

  Application.DoEvents()函數是WinForm編程中極為重要的函數,但實際編程中,大多數開發者極少調用它。如果您對這個函數缺乏了解,那很可能會在以后長期的編程中對“窗體假死”這樣的現象陷入迷惑。

  當運行 Windows 窗體時,它將創建新窗體,然后該窗體等待處理事件。該窗體在每次處理事件時,均將處理與該事件關聯的所有代碼。所有其他事件在隊列中等待。當代碼處理事件時,應用程序不會響應。例如,如果將甲窗口拖到乙窗口之上,則乙窗口不會重新繪制。

  如果在代碼中調用 DoEvents,則您的應用程序可以處理其他事件。 例如,如果您有向ListBox添加數據的窗體,并將 DoEvents 添加到代碼中,那么當將另一窗口拖到您的窗體上時,該窗體將重新繪制。如果從代碼中移除 DoEvents,那么在按鈕的單擊事件處理程序執行結束以前,您的窗體不會重新繪制。

  因此,如果我們在窗體執行事件時,不處理消息隊列中的windows消息,窗體必然會失去響應。而上文已經介紹過,Control.Invoke和BeginInvoke都會向UI發送消息,造成UI對消息的處理,因此,這為我們解決窗體加載大量數據時的假死提供了思路。

解決方案

嘗試”無假死”

  這次我們使用開發中出現頻率極高的ListView控件,體驗一次理想的”異步刷新”,窗體中有一個ListView控件命名為listView1,并將View設置為Detail,添加兩個ColumnHeader;一個Button命名為btn_Start,設計視圖如下:

開始code:

private readonly int Max_Item_Count = 10000;

private void button1_Click(object sender, EventArgs e)
{
new Thread((ThreadStart)(delegate()
{
for (int i = 0; i < Max_Item_Count; i++)
{
// 此處警惕值類型裝箱造成的"性能陷阱"
listView1.Invoke((MethodInvoker)delegate()
{
listView1.Items.Add(new ListViewItem(new string[]
{ i.ToString(), string.Format("This is No.{0} item", i.ToString()) }));
});
};
}))
.Start();
}

  代碼運行后,你將會看到一個飛速滾動的ListView列表,在加載的過程中,列表以令人眼花繚亂的速度添加數據,此時你嘗試拉動滾動條,或者移動窗體,都會發現這次的效果與以往的”白板”、”假死”截然不同!這是一個令人欣喜的變化。

運行過程:

  從我的截圖中可以看出,窗體在加載數據的過程中,依然繪制界面,并沒有出現&rdquo;假死”。

  如果上述代碼調用的是Control.BeginInvoke,程序會發生些奇怪的現象,想想是為什么?

好吧,到了現在,我們終于可以松了一口氣了,界面響應的問題已經被解決,一切美好。但是,這樣的窗體還是暴漏出兩個大問題:
1. 比起傳統加載,”無假死窗體”加載速度明顯減慢。
2. 加載數據過程中,窗體發生劇烈閃爍現象。

問題分析

  我們在調用Control.Invoke時,強迫窗體處理消息,從而使界面得到了響應,同時也產生了一些副作用。其中之一就是消息處理使得窗體發生了在循環中發生了重繪,”閃爍”現象就是窗體重繪引發的,有過GDI+開發經驗的開發者應該比較熟悉。同時,每次調用Invoke都會使UI處理消息,也直接增加了控件對數據處理的時間成本,導致了性能問題。

  對于&rdquo;性能問題”,我并沒有什么解決方案(有自己見解的朋友歡迎提出)。有些控件(ListView、ListBox)具有BeginUpdate和EndUpdate函數,可以臨時掛起刷新,加快性能。但畢竟我們這里創建了一個會滾動的界面,這種數據的”動態加載”方式是前者無法比擬的。

  對于”閃爍”,我先來解釋問題的原因。通常,控件的繪制包括兩個環節:擦出原對象與繪制新對象。首先windows發送一個消息,通知控件擦除原圖像,然后進行繪制。如果要在控件面板上以SolidBrush繪制,控件就會在其面板上直接繪制內容。當用戶改變了控件尺寸,Windows將會調用很多繪制回收操作,當每次回收和繪制發生時,由于”繪制”較”擦除”更為延后,才會給用戶帶來”閃爍”的感覺。以往我們為解決此類問題,往往需要在Control.WndProc中作出復雜的處理。而.NET Framework為我們提供了更為優雅的一種方案,那就是雙緩沖,我們直接調用它即可。

最終方案

1.新建Windows組件DBListView.cs,讓它繼承自ListView。
2.在控件中添加如下代碼: public DBListView()
{


// 打開控件的雙緩沖
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
}

將項目重新生成,然后從工具箱中拖出新增的組建DBListView到窗體上,命名為dbListView1,執行以下代碼: private void button1_Click(object sender, EventArgs e)
{
new Thread((ThreadStart)(delegate()
{
for (int i = 0; i < Max_Item_Count; i++)
{
// 此處警惕值類型裝箱造成的"性能陷阱"
dbListView1.Invoke((MethodInvoker)delegate()
{
dbListView1.Items.Add(new ListViewItem(new string[]
{ i.ToString(), string.Format("This is No.{0} item", i.ToString()) }));
});
};
}))
.Start();
} >

  現在”閃爍”的問題是不是已經得到了解決?

  在我們的實際應用中,這種加載數據引起的阻塞是很常見的,在用戶對界面性能關注度不高的情況下,使用本文介紹的方式處理這種阻塞是一種不錯的選擇,如果以類似IE8、迅雷等軟件的載入動畫配合,效果會更理想。

 


標簽:

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn

文章轉載自:博客園

為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
亚洲图片国产 | 国产成年人免费在 | 天天躁日日躁狼狼 | 免费观看最新电影和热门影视剧 | 精品国产人成亚洲区 | 国产精品自产拍在线观看花钱看 | 国产天堂在线丝袜一区 | 亚洲欧美成va人在线观看 | 日本夫妻激情生活b区 | 精品录音国产一区在线 | 专区在线观看 | 中文字字幕在线精品乱码高清 | 天天射天天添 | 国产在线拍揄自揄免费一区 | 在线观看v | 国产精品激情欧美可乐视频 | 最新热门日韩电影 | 日韩高清亚洲日韩精品一区 | 天天看片高| 国产精品剧情一区二区在线观看 | 绿帽视频| 免费一区二区 | 成人午夜视频精品一区 | 国产一区视频在线观看 | 欧美日韩视费观看视频 | 国产农村妇女特 | 国产精品毛 | 国产综合精品国 | www.妞干网.com | 国产日产中文在线观看 | 草102| 欧美日韩另类视频在线观看 | 91精品免费看 | 午夜福利一区二区三区在 | 91高清免费国产自产拍不卡 | 欧美日韩日本中国高清视频在线 | 国产专区第一页 | 欧美精品aⅴ一区二区三区 天堂a在线观看视频 | 日本xxxwww在线观看 | 国产亚洲一卡二卡三卡四卡 | 影视大全官网 | 日韩欧美亚洲国产永久在线观看 | 亚洲男女在线 | 欧亚成人 | 亚洲无线码一区国产欧美国日产 | 免费一级欧美片在线观看欧美 | 日本乱伦自拍欧美 | 亚洲一区二区在线免费观看 | 最近中文字幕高清mv免费 | aⅴ片在线观看 | 玩弄老太婆的屁股眼 | 国产精品先锋 | 观看国产色 | 欧美三级不卡在线观看 | 国产超级在线视频观看 | 成年人免费在线视频观看 | 婷婷蜜桃国产精品一区 | 国产伦精品一区二区三区免.费 | 午夜国产精品理论 | 色香欲综合成人免费视频 | 999y| 性荡视频播放在线视频 | 动漫精品一区二区三区四 | 日韩亚洲欧美中文高清在线 | 三级国产久| 日本视频在线观看不卡高清免费 | 成人免费观看黄ā大片夜月 | 国产人成精品 | 国产欧美视频综合二区 | 亚洲国产网站在线观看 | 免费在线观看电视剧大全 | 亚洲精品二区国产综合野狼 | 亚洲欧美中文在线观看4 | 天天被干免费观看视频 | 亚洲欧美日韩人成在线播放 | 好男人网官网在线观看2025 | 国产婷婷综合在线精品尤物 | 亚洲а∨精品天堂在线 | 亚洲欧美精品一区二区 | 亚洲日韩国产第一成人 | 99国产视频 | 蜜桃色永久入口 | 国产欧美精品久 | 中文字幕卡通动漫精品首页 | 国产欧美精品亚洲日本一区 | 亚洲性色精品一区二区在线 | 免费的电影天堂手机在线观看 | 潦草影院 | 亚洲国产综合视频免费在线 | 99九九精品国产高清自在线 | 日本夫妻激情生活b区 | 亚洲三级一区二区在线观看 | 成人专区一区二区三区四区 | 国产精品天干天干在线观看 | 免免费看 | 亚洲综合另类第一页 | 另类国产亚洲日韩 | 村长扶着小萍的腰猛的挺进 | 午夜亚洲福利在线老司机 | 中文字幕在线视频 | 日本国产中文字幕 | 男人猛躁进女人成人免 | 97影院| 欧美日韩一区二区三 | 国产激情电影综合在线看 | 日韩精品一区二区三区高清 | 国产92刮伦脏话对 | 亚洲精品乱码在线观看 | 一区二区自拍 | 亚洲日产乱码一二三区别 | 岛国大片 | 银杏视频推广下载入口 | 香港日本韩国三级网站 | 泰剧tv网 | 日韩男女性生活视频在线观看 | 日本黄页网址在线 | 亚洲精品老司机在线观看 | 国产精品成人免费视频网站京东 | 国内自拍第一页 | 免费人成黄页在线观看国产 | 秋霞网国产| 好男人www社区 | 欧洲美熟女乱又伦 | 成人欧美一区二区三区黑人免费 | 男女拍拍拍免费视频 | 三级高清精品国产 | 亚洲一区激情校园小说 | 欧美日韩国产一区 | 亚洲国产日韩欧美一级三级 | 欧美亚日韩国产aⅴ精品中极品 | 91啪国自产最新91啪国自产 | 欧美不卡一区二区 | 韩国日本免费不 | 自偷自拍三级全三级视频 | 欧美校园激 | 在线亚洲欧美日韩每日更新 | 国产在线精品一区二区在线观看 | 丰满大号美女 | 字幕一区| 国产精品美脚玉足 | 亚洲手机 | 精品国产香蕉在线观看 | 国产一区二区三区不卡在线 | 亚洲欧美日韩中文另类不卡 | 亚洲欧美日韩激情在线观看 | 一二三区免费视频 | 综合在线| 国产一级特黄一级毛 | 免费动漫成本人视频网站 | 星空影院 | 亚洲国产一区在线观看视频 | 小明加密通道最新三 | 欧美蜜桃臀在线观看一区 | 国产人成午夜免电影费观看 | 在线播放不收费 | 国产精品爱的在线线免费观看 | 午夜亚洲国产理论片二 | 精品国产亚洲一区二区三区在线观 | 国产精品美女视视频 | 羞羞午夜 | 99精品视频观看 | 亚洲一区二区三区和欧美四区 | 国产91精品对自露脸全集观看 | 精品一区二区三区在线观看视 | 亚洲精品国产福利 | 欧美一区日韩一区中文字幕页 | 欧美性大战 | 国产欧美日韩精品第一区 | 日韩欧美性爱精品一区二区 | 免费在线宅男精品视频 | 欧美变态口味重另类在线视频 | 国产视频自拍91 | 亚洲日韩在线精品茄子在线 | 亚洲精品免费视频观看 | 99热在线精品国产观看 | 欧美一区二区三区四区国产另类 | 日韩视频在线观看网站资源 | 欧美一级做a爱高清免费观看 | 国产女精品 | 日韩欧美在线国产一区二区 | 日本激情在线观看免费观看 | 国产一区二区三 | 欧美日韩视频一区二区三区 | 最近中文字幕无吗高清免费视频 | 老司机精品一区在线视 | 午夜影视在线播放免 | 激性欧美在线播激性欧美 | 日产无人区一线二线三线最新版 | 国产一区免费在线观看 | 色五月最新网 | 亚洲性影院在线看 | 91精品国产丝袜在线拍 | 大胆gogo高清在线观看 | 国内精品视频在线 | 国产黄在线观看免费观看不卡 | 国产激情久 | 国产免费中文综合 | 午夜a级理论片在线播放可米 | 国产精品日产欧美在线一区 | 日本中文字幕在线播放 | 国农村精品国产自线拍 | 日本一二三区视频在线 | 国产精品欧美视频另类专区 | 国产一二三 | 日本免费亚洲视频 | 337p日本人体 | 一区二区三区网站 | 羞羞影院午夜男女爽爽视频 | 一区在线观 | 亚洲欧洲自拍拍偷午夜色 | 国产亚韩欧美联合在线 | 国产欧美日韩综合一区在线 | 精品一区二区三区在线观看视频 | 欧美有色 | 成人午夜在线观看日韩 | 狂野少女电视剧免费播放 | 国产激情在线观看免费视频 | 免费在线观看电视剧电影的网站 | 极品美女一区二 | 午夜色大片在线观看 | 国产一区二区三区不卡在线 | 亚洲日本道1区2区3区不卡 | 中文字幕卡通动漫精品首页 | 成人影院| 欧美无砖专区一中文字幕 | 国产99视频精品免视看9 | 国产福利 | 国产福利不卡免费视频在线观 | 欧美色综合网站 | 亚洲国产精品va在线看黑人 | 精品国产品国语在线不卡 | 区一区二区三视频日韩 | 两性午夜刺激性视频2345 | 美女裸身网站免费看免费网站 | 亚洲日韩色在 | 好看的电视剧推荐 | 国产在线精品一区二区三区 | 92午夜福利合集10 | 91精品啪在线观看国产线免费 | 韩国伦理电影在线观免费观看 | 欧美国产日韩一区二区三区综合视 | 免费电视剧 | 一级直接观看 | 亚洲欧洲另类春色校园小说 | 凄辱护士日本电影免费看 | 亚洲国产精品综合一区在线 | 欧美精品视频手机在线视频 | 国产中文永久 | 羞羞影院午夜男女爽 | 国内外成人激情免费在线视频 | 国产精品自在拍在线播放大全 | 国产欧美亚洲一级a在线观看 | 日本亚洲欧 | 国产日产欧美一区二区三区 | 91女神在线观看 | 一区二区性爱视频 | 国产产精品亚洲一区二区在线观看 | 国产精品爽爽va在线 | 涩涩视频污污 | 99精品一区二区三区 | 最新动漫| 18国产午夜福 | 日韩欧美一区 | 片在线播放 | 精品一区精品二区制 | 日本成本人片免费网站 | 亚洲人成网址在线播放小说 | 99热久re这里只有精品小草 | 91精品国产一区二区三区香蕉 | 日韩在线观看不卡 | 日本在线日本中文字幕 | 国产免费一级视频在线观看 | 亚洲综合日韩精品欧美综合区 | 亚洲h成年动漫在线观看不卡 | 国产视频高清在线观看 | 欧美精品一区二区男同专区 | 综合乱伦自拍三 | 免费高清一二三区日本 | 日本乱理伦片在线观看中文 | 亚洲国产精品日韩在线 | 亚洲欧美另类在线一区 | 我被两个老外抱着高爽翻了 | 亚洲va在线va天堂xxxx | 日本乱码乱码免费高清视频 | 亚洲国产精久 | 国产精品观看 | 欧美中日韩免费观 | 欧美在线综合 | 欧美精品在线一区二区三区 | 亚洲国产日韩欧美一级三级 | 欧美日韩视频在线观看第一区 | 国产亚洲欧美高清在线观看 | 8x8×拨牐拨| 欧美日韩在大午夜爽爽影院 | 国语自产精品视频一区二区 | 国产精品亚洲a∨天堂 | 看全色黄大色黄大片女爽一黄 | 拍拍拍无挡国产精品 | 一本加勒比hezyo国产 | 日韩一区二区三区射精 | 午夜福利一区在线 | 欧美亚洲日本中文字幕在线 | 极品尤物一区二区 | 欧美激情福利 | 福利片+国产+合集 | 欧美黑粗特黄午夜大片 | 亚洲国产日韩在线人成电影 | 精品偷自拍另类在线观看 | 亚洲午夜在线x88∨ 亚洲精品国偷自产在线 | 欧美性大战xxxx | 国产精品自产拍在线观看花钱看 | 一日本道伊| 国产精品毛多多水多 | 今日吃瓜 | 国产一区二区三区水蜜桃 | a级全黄试看30分钟gif动图 | 亚洲一区 | 一二区视频免费在线观看 | 欧美综合图区亚洲综自拍 | 亚洲国产系列一区二区三区 | 麻花传剧mv在线看 | 午夜夫妻试看120国产 | 欧美国产激情二区三区 | 欧美亚洲综合成人a∨在线 亚洲国产中文字幕在线观看 | 国产精品偷伦视频免费观看了 | 自拍欧美在线综合另类 | 91成人精品爽啪在 | 国产在线精品国自产拍影院同性 | 日韩伦理电影中文在线 | 尤物网红麻酥酥 | 国产成+ | 亚洲偷偷拍一区二 | 日韩亚洲欧美理论片 | 成品人视频ww入口 | 八戒成年私人影院 | 国产精品乱码一区二区视频 | 日本国产欧美日韩三区四区 | 午夜免费看片 | 亚洲综合在线一区二区三区 | 精品国产人成亚洲区 | 亚洲小说区图片区另类春色 | 免费国产偷人三大片视频 | 精品不卡一区二区 | 亚洲欧美人高清精品a∨ | 又粗又黄又猛又爽大片免费 | 日韩中文字幕精品视频在线 | 国产精品区网红主播在线观看 | 精品国产一区二区三区四 | 免费精品99 | 中文字幕在线看片 | 狠狠狠狼鲁欧美综合网免费 | 国产全黄三级国产全黄三级书 | 国产精品专区第一页 | 夜夜狂射影院欧美极品 | 试看试看视频 | 激情亚洲一区国产精品 | 午夜性影院爽爽爽爽爽爽 | 国产亚洲高清不卡在线 | 日产亚洲一卡2卡3卡4卡网站 | 国产精品日本一区二区在线看 | 亚洲国产人成在线观看 | 精品一区二区在线视 | 日韩色禁网站永久视频 | 成人免费观看做爰视频胸大 | 国产亚洲欧美日韩高清专区 | 成在线人免费视频 | 片一级二级 | 精品国产自 | 92国产福利午夜 | 日韩欧美亚洲国产永久在线观看 | 国产亚洲精品福利在线 | 亚洲一区二区三区精品动漫 | 午夜男女刺激爽爽影院 | 免费人成网站在线观看欧美 | 国产高清不卡一区二区三区 | 一区二区三区美女图片 | 五月天综合网 | 国产在线精品一区二区三区直播 | 国产亚洲美女精品 | 国产精品一区二区日韩91 | 97国产在线视频公开免费 | 国产欧美日韩午夜在线观看 | 果冻传媒视频在线 | 无人一码二码三码4码免费 91网首页 | 時政要聞| 国产原创露脸视频在线观看 | 国产精品中文字幕免费观看 | 国产性生大片免费观看性 | 国产va免费精品高清在线观看 | 国产精品porn | 免费人成再在线观看视频 | 777国产偷窥盗摄精品1 | 午夜性爱故事在线观看 | 9re热国产这里只有精品 | 性感美女视频韩国 | 国产九九热视频 | 91精品国产自产91精品 | 国产操穴| 国产午夜福利短视频在线观看 | 97韩剧网 | 91国自啪 | 观看视频在线观看 | 午夜视频在线免费 | 国产伦精品一区二区三区免.费 | 三年片最新电影免费观看 | 日本加勒比在线 | 欧美不卡在线 | 野花香视频在线观看免费高清版 | 日韩欧美在线观看一区 | aa级亚洲电影 | 日本一在线中文字幕天堂 | 国产久免费在线观看 | 欧美性播放中国 | 污污污免费 | 在线鲁鲁视频免费观看 | 日本伊人网在线观看 | 日韩亚洲国产欧美在线看片 | 92国产福利午夜757小视频 | 大胆gogo无| 放荡老师张开双腿任我玩 | 国产在线视频专区 | 国产精品亚洲无线码在线播放 | 亚洲国产精品美女 | 蜜桃视频一区二区在线观看 | 中文字幕亚洲精品第1页 | 国内精品91最新在线观看 | 欧美精品v日韩精品v韩国精品v | 伊人开心激情网第一区 | 人人影视 | 中文在线资源天堂www | 国产欧美国日产在线播放 | 人在线观看青青 | 国产一级做a爱免费 | 在线观看免费精品国产第一区 | 国产日韩欧美视频网址 | 美女被男人桶到爽免费网站 | 日韩欧美天堂 | 国产mv在线天 | 高清欧美性xxxx成熟 | 午夜福利电影在线 | 特黄a三级三级三级视频 | 一进一出又大又粗爽视频 | 欧美日本道 | 午夜看片在线观 | 99精品福利国产精品一区 | 最近中文字幕高清mv免费 | 久热亚洲 | 亚洲精品影院一区二区 | 女人18毛| 精品午夜福利1000在线观看 | 一级特黄大片欧美99 | 一级特黄性色生活片一区二区 | 精品国产免费一区二区三区香 | 加勒比色 | 51精品免费视频国 | 欧美制服丝袜在线 | 日韩a无v码在线播放免费 | 欧美一区二区在线观看视频 | 午夜拍拍拍 | 国产乱人视频免费播放 | ⅴ人在线观看 | 午夜网站免费 | 国产欧美在线综合一区 | 亚洲精品一区二区三区在 | 夜夜未满十八勿进的爽爽影院 | 国产97盗摄视频一区二区三区 | 美女张开让男生桶 | 1024手机看片国产日韩欧美 | 国产一区二区三区在线观看免费 | www.俺去也.com影院99 | 日本乱理伦片在线观看中文字幕 | 精品視頻無碼一區二區三區 | 夜夜综合视频欧美 | 在线欧美鲁香蕉94色 | 免费看日| 欧美人与日本人xx在线视频 | 青草青草久热精品视频在线观看 | 亚洲国产婷婷综合在线精品 | 国产美女一区三区在线观看 | 国语自产免费精品视频在 | 色哟哟精品视 | 日本高清中文字幕在线观穿线视频 | 国产免费私拍一区二区三区 | 91精品欧美一区二区综合在线 | 色一情一乱一伦 | 日本视频免费 | 欧美性受xxxx白人 | 韩国中文全部三级伦在线观看中文 | 国产精品欧美亚洲韩国日本不卡 | 在线日本妇人成熟免费 | 综合永久入口 | 中文第一页在线视频 | 日本亚洲一区二区 | 91欧美精品综合在线观看 | 欧美日皮片 | 国产不卡高清在线观看视频 | 日韩精品搭讪在线视频播放 | 日韩最新免费视频一区二区 | 中国在线观看免费国语版 | 国产欧美一区二区另类精品 | 八戒八戒在线资源网 | 亚洲欧美日韩高清综合678 | 亚洲日韩动漫一区 | 91伊人网| 日本一区午夜艳熟免费 | 中文字幕在线观看国产 | 国产一级精品在线播 | 手机免费安装推荐 | 一本大道综合伊人精品热热 | 国产免费视频观看网站 | 亚洲经典 | 91欧美精品| j8又粗又硬又大又 | 免费电视剧 | 国产精品202 | 老司机91精品网站在线观看 | 国产一级淫片a免费播放口 海量热播电视剧手机电影在线观看 | 国产一区二区影视 | 国产亚洲欧美手机在线观看 | 欧美一级精品 | 欧美日韩精品一区二蜜桃在线观 | 91精品视品在线播放 | 中文字幕在线免费专区 | 中文字幕亚洲日韩第一页 | 亚洲男人第一αv网站 | 国产乱码卡二卡三卡4 | 日本日本乱码伦视频在线 | 亚洲欧美综合精品成 | 亚洲一区二区国产精品 | 国产综合在线91精品思思 | 成人免费观看视频 | 乱伦国产欧美三级 | 日本欧美一区二区三区不卡 | 区二区视频在线观看 | 国产极品 | 神马午夜影院 | 97影视 | 性直播视频在线观看免费 | 91香蕉成人免费网站 | 加勒比一本 | 免费最新电视剧 | 国产激情影视综合 | 亚洲欧洲一区 | 欧美日韩亚州在线 | 欧美怡红院免费全部视频 | 影视大全电视剧在线播放 | 观看一级 | 日韩亚洲欧美国产精品综合 | 2025精品久| 娇妻被交换粗又大又硬彩 | 91sese| 日本顶级rapper潮水老狼 | 欧美成视频无需播放器 | 日本免费一级婬片a级中文字幕 | 欧美日韩精品国产—区在线 | 精品国产一区二区三区亚洲 | 中文字幕精品一二三四五六七八 | 日本高清视频色www在线观看 | 亚洲国产精品美女 | 国语精品91自产拍在线观看二区 | 日韩欧美精品国产亚洲综合 | 字幕一区精品自拍 | 在线观看国产日韩欧美 | 最新亚洲一区二区在 | 久热国产vs视频在线观看 | 电视剧大全手机 | 精品国产福利在线观看网站 | 中文字幕亚洲一区二区三区 | 国产传媒一 | 一二三区在线播放国内精品自产拍 | 韩国伦理电影在线观免费观看 | 尤物国产精品福利三区 | 免费高清理伦片在线观看 | 日韩精品欧美一区喷 | 国产一区二区精品在线 | 亚洲免费网站在线观看 | 99精产国品一二三产品香蕉 | 人人超人人超免费国产 | 视频在线精品 | 污污污免费 | 欧美一级大黄特黄 | 人成视频在线观看国产 | 欧美精品亚洲日韩aⅴ | 成人福利在线免费观看 | 日韩高清va视频 | 亚洲欧美在线观看片不卡 | 免费在线观看小说区激情另类 | 国产日韩精品一区在线观看 | 青青国产在线观看 | 免费国语高清电影电视 | 国产高清亚洲 | 亚洲欧美色国产综合 | 日韩在线电影大全免费观看 | 综合国产日韩亚洲 | 国产精品va在线播放 | 国产日韩一 | 国产国产国产 | 国产又粗又黄又爽的大片 | 亚洲一区二区三区高清在线播放 | 亚洲欧美日韩一区二区在线观看 | 91高清免费国产自产拍不卡 | 好男人好资源神马在线 | 三年片在线观看大全中国 | 91精品全国免费观看青青 | 欧美一级a人与 | 麻花视频v3.2.2纯净版 | 国产午夜亚洲精品理论片八戒 | 国产在线成人 | 91精品国产免费自在线观看 | 精品国产免费一区二区三区香 | 第一影院| 国产中文字幕永久在线观看 | 人人看人人拍国产精品 | 中文字幕一区日韩精品 | 国产女女互摸互慰在线观 | 亚洲国产剧情一区在线观看 | 性夜黄a爽爽免费视频国产 亚洲日本一区二区一本一道 | 国产精品lululu在线观 | 亚洲韩国欧美一区二区三区 | 热门电影电视剧短剧免费在线观看 | 国产高清在线免费观看 | 国产v综合v亚洲欧美大天堂 | 精品国产香蕉在线观看 | 亚洲网站视频在线观看 | a∨中文字幕另类 | 亚洲精品欧美中文字幕 | 国产男同在 | 手机看片福利一区二区三区 | 精品国精品| 日韩成人在| 给我免费播放片国语电影 | 成人亚欧网站 | 国产普通话对 | 国产在线观看第二十三页 | 日韩在线免 | 五月天一区二区在线观看 | 日韩精品高清在线亚洲天堂 | 国内精品美女a在线播放 | 欧美日韩一区免费观看 | 亚洲欧美一区二区不卡 | 电视剧排行榜 | 国产suv精| 热播电影在线观看 | 免费观看电影真不卡 | 欧美三级欧美一级在线视频 | 欧美日韩一区二区在线 | 精品亚洲欧美视频在线观看 | 国产亚洲精品成 | 午夜欧美日韩精品 | 视频在线观看一区 | 国产模特精品私拍在线 | 91久色视 | 国产不卡福利片在线观看 | 日本高清一区免费中文视频 | 91精品福利在线观看播放 | 精品第一国产 | 真人一级一级99片黄大片 | 二区三在线播放 | 午夜三级 | 国产视频网站在线 | 国产a∨天天免 | 午夜福利在线观看亚洲一区二区 | 禁止18点击进 | 国产手机自拍视频 | 巜大学生特殊 | 日韩日日日 | 国产盗摄在线观看 | 国产a∨精品一区 | 亚洲va欧美va天堂v国产综合 | 亚洲人成手机 | 日本高清视频一区二区 | 国产色系视频在线观看免费 | 明星国产欧美日韩在线观看 | 成人级片中文字幕在线播放 | 国产精品免费大 | 亚洲欧美日韩国产综合 | 国产情侣一区二区三区 | 韩国三级精品 | 国产免费观看视频 | 亚洲已满18点击进入在线观看 | 免vip免费观看热播电 | 无人区一线二线三线乱码 | 欧美亚洲一区二区三区导航 | 勃起又长又黑又粗毛又多 | 99热这里只有精 | 九热视频 | 国产综合精品一区二区三区 | 日韩精品在线第二页 | 国自产精品手机在线观看视 | 成人精品鲁一鲁一区二区 | bt自拍另类综合欧美 | 性xxx免费视频 | 亚洲欧美另类偷窥自拍 | 人人干美女 | 欧美亚洲色另类偷自拍 | 国产公开免费人成视频 | 日韩成人国产精品视频 | 91香蕉成人免费网站 | 国产绿奴视频在线观看 | 国产精品9999 | 国产精品日本一区二区在线看 | 91看片婬黄大片91挑色 | 国产va免费不卡看片 | 97色伦色在线综合视频 | 91夜夜夜精品一区二区 | 日韩精品视频欧美国产 | 国产精品亚洲玖玖玖在线观看 | 日韩精品福利片午夜免费观着 | 局长含着 | 午夜成人影视 | 国产特黄精品一区二区在线 | 精品一区二区三区在线视频 | 一区二区影院 | 午夜电影这里只有精品 | 国产欧美日韩精品视频一区二区 | 一区二区三区精品视频免费播放 | 小雪被老 | 精品国产鲁一鲁一区二区 | 在线日韩不 | 在线观看第一页 | 女厕所撒尿视频免费 | 国产精产国品一二三在观看 | 国产亚洲一区二区在线 | 国产又黄又 | 色眯眯国产在线播 | 日本特级婬片中文免费看 | 天天看片高 | 中文字幕日本一本二本 | 日韩国产私拍在线观看 | 国产区日韩精品一区二区三区 | 国产在在| 欧美v亚洲v日韩v最新在线 | 亚州国产精品一线北 | 亚洲国产一区视频 | 亚洲人成电影在线小说网色 | 国产91 | 今日吃瓜 | 军训完被教官灌满精子男男 | 日韩一级一区二区不 | 中文天堂最新版资源 | 日韩国产欧美 | xx性欧美肥妇欧美 | 亚洲韩精品欧美一区二区三区 | 国产精品精品国内自产拍 | 日韩视频在线 | 日本一区二区三区在线观看网站 | 亚洲男人第一天堂 | 最近最新中文字幕在线第一页 | 国产97色在线 | 精品夜恋影院亚洲欧洲 | 亚洲欧美日韩国产精品一区二 | 免费高清欧美一区二区三区 | 国产老妇玩伦国产熟女高清 | 免费人成网上在线观看 | 亚洲精品国产va在线观看天堂 | 亚洲精品自偷自拍 | 欧美亚洲日本另类图区 | 国产激动情五月天 | 一级a一片在线播放国产 | 日韩欧美伦理 | 国产性夜夜春夜夜爽30 | 免费的影视大全 | 99热九| 午夜网站在线观看www | 日本欧美中文幕 | 九九视频免费精品视频 | 亚洲精品在线免费观看 | 亚洲综合在线一区二区三区 | 精品欧美一区二区三区在线 | 2025精品久| 日本韩国欧美 | 综合精品 | 香蕉伊蕉伊中文在线视频 | 中文字幕国产日韩 | 国内性色精品视频 | 精品欧美一区二区三区在线观看 | 欧美精品自拍一区 | 欧美综合在线激情专区 | 最新国产福利在线观看精品 | 息与子猛烈交尾在线播放 | 大地影院高清mv在线观看 | 一二三四在线观看免费视频 | 波多野结| 韩国在线观看日韩免費資訊 | 亚洲专区欧美三级 | 自拍偷亚洲成在线观看 | 成人碰碰视频公开老师 | 乱码一线二线三线新区破解欧 | 国内综合精品午 | 爽妇网国产精品 | 国产精品美女视视频 | 欧美精品视频一区 | 曰本性l交片视频免费 | 欧美日韩国产综合草草 | 国产欧美日韩精品专区 | 欧美日韩国产精品一区二区在 | 国产欧美视频综合二区 | 91精品 | 日韩欧美一区一本到国产 |