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

金喜正规买球

如何解決窗體假死

轉帖|其它|編輯:郝浩|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
亚洲综合色一区二区三区另类 | 宅男在线永久免费观看 | 精品国产不卡在线观看免费 | 中文字幕不卡欧美日韩在线 | 精品剧情v国产在线观看 | 亚洲欧美精 | 大伊香蕉精品一区在线 | 日本不卡一二三区视频免费 | 2025年精品国产福利在线 | 韩国日本免费高清观看 | 日本亚洲精品 | 亚洲一区二区三区精品动漫 | 香蕉国产亚洲精品va在线观 | 精品一区精品二区制 | 精品国产鲁一鲁一区二区 | а天堂中文最 | 亚洲欧美日本一区二区三区 | 一区二区三区日韩免费 | 精品三级影视亚洲 | 二区三区视频精品 | 欧美一区色 | 日本爽爽爽爽爽爽在线观看免 | 精品国产99国产精偷国产黄在线 | 国产在线播放免费 | 轻点灬大ji巴大粗长了视频 | 国产日本精品视频 | 偷自拍亚洲视频在线观看99 | 国产一区二区三区免费在线观看 | 国产日韩另类视频一区爱 | 欧美性受xxxx白人性爽 | 亚洲卡一卡二卡三乱草莓 | 亚洲人成欧美中文字幕 | 欧美性黑人极品hd另类 | 国产伦精品一区二区三区免.费 | 国产在线ts | 美女裸身网站免费看免费网站 | 很黄很色的免费视频在线观看 | 五月天丁香激情 | 特黄a三级三级三级视频 | 96精品专区国产在线观看高清 | 国产伦精一品二品三品 | 玩成熟老熟女视频 | 在线观看日韩欧美 | 亚洲亚洲人成网站77777 | 日韩一区视频精品无高清在 | 中文精品一区二区三区四区 | 最新中文字幕在线观看 | 免费人成网 | 国产精品亚洲片夜色在线 | 中文字幕不卡高 | 91精品一区二区三区蜜桃 | 在线观看国产视频黄 | 国产亚洲午夜高清亚洲精品 | 日本影片一区二区 | 国产一区福利在线 | 日韩欧美国产91丝袜 | 久99久精品 | 无人在线视频高清免费观看 | 亚洲欧美中文字幕乱码在线 | 亚洲综合国产一区在线 | 一级特黄性色生活片一区二区 | 日本一区二区三区视频 | 日韩精品中文字幕一区 | 欧美色aⅴ欧美综合色 | 国产一级视频播放 | 在线精品免费看 | 亚洲日韩欧美在线一区二区 | 依人成人| 亚洲欧美日韩中文二区 | 亚洲精品国产精品国自产网站 | 国产拍揄自揄免费观看 | 国产熟女绯色一区二区三区免费 | 日本中文字幕在线播放 | 日本免费人成视频播放 | 日韩视频一区二区在线观看 | 国产精品制服丝袜另类 | 91欧美精品综合在线观看 | 日本视频一区二区三区 | 午夜欧美性视频在线播放 | 欧美大成色www永久网站婷 | 免费影视大全 | 热播电视剧 | 国产一区精品普通话对白 | 国产人成精品香港三级在线 | 日韩欧美在线网址 | 韩国三级高清手机在线版 | 97国产在线一区不卡 | 欧美.日韩.日本中亚网站 | 日本中文有 | 中文岛国精品亚洲一区 | 亚洲欧美一区二区三区久本道 | 乱vodafo| 国产福利小视频在线免费观看 | 精品国产午夜福利不卡在 | 视频h在线观看 | 国产2025精品视频免费播放 | 亚洲成综合人在线播放 | 精品动漫福利h视频在线观看 | 午夜伦伦| 日本不卡网站 | 欧美a级毛欧美1级a 国产午夜不卡 | 国产美女自卫慰水免费视频 | 人成综合网络 | 在线第一页 | 欧美一级别 | 99视频精品国 | a级国产乱理 | 亚洲欧美福利一区二区 | 亚洲精品高清 | 手机电影 | 2025年最新高清电影 | 国产欧美一区二区樱花在线观看 | 成人永久免费高清 | 国产精品人妇一区二区三区 | 香蕉一区二区三区中文字幕 | 一区二区三区激情 | 国产午夜福利精品在线观看不 | 国产网站免费视频 | 国产高清免费在线观看 | 高清在线精品一 | 97国产 | 国产精品拍综合在线 | 日韩欧美视频一区二区三区 | а√天堂资源在线官网 | 国产伦精品 | 亚洲欧美国产 | 日韩视频中文 | 日本中文字幕在线观看全 | 福利电影大全 | 日韩精品一区二区三区 | 97国产综合色产在线视频 | 肉色超薄丝袜脚交 | 无线资源国产资源好片欧美 | 欧美国产日本高清不卡免费 | 国产一区二区三区精品专区 | 日本三级网站在线观看视频 | 国产精品区乱淫片人成人 | 精品国产99国产精偷国产黄在线 | 国产网站一区二 | 国产在线观看免费人成视频 | 一区二区精品日韩欧美在 | 国产精品自在线拍 | 亚洲免费观看在 | 看全色黄大色黄大片女爽一黄 | 成年轻人视频免费视频 | 看一级特黄a大一片电影 | 亚洲欧美另类在线区 | 97青青| 中文字幕精品视频第一区第二区 | 亚洲日韩精品综合一区二区 | 亚洲男人夜夜精品电影 | 国产免费131美女 | 日韩精品福利片午夜免费观着 | 亚洲人成在线观看 | 免费不卡影院 | 视频在线华人精品草 | 国产91福利小视频在线观看 | 九九热精品在 | 国产亚洲精品综合一区二区 | 欧美阿v高清 | 丝袜线观看 | 99re热视频这里只有综合亚洲 | 亚洲欧美日韩另类中文字幕组 | 国产一级特黄a大片免费 | 亚洲精品午夜不卡在线播放 | 欧美日韩国产高清一区二区三区 | 老师脱了内裤让我进去 | 99精品成人高清在线观看 | 电视剧免费在线观看 | 中文字字幕乱码 | 东北老女人 | 免费人成视在线观看不卡 | 偷拍美女厕所 | 麻花传媒免费网站在线观看 | 亚洲国产中文日韩精品乱码 | 按摩推油在线观看国产 | 日本韩国偷拍视频对白不卡高清精 | 国产又黄又粗又色又刺激视频 | 欧美一区日韩二区在线观看 | 国产精品一区二区三 | 国产偷拍盗摄一区二区 | 精品不卡一区二区 | 日日精品国产高清国产专区 | 精品香蕉伊思人在线观看 | 国产人成精品 | 日韩在线| 永久在线观看免费视频 | 99精品国产福利在线观看 | 人人添人人 | 丝袜美腿精品 | 国产成年女人特黄特色大片免 | 国产精品理| 国产一区二区三区四区精 | 日韩免费在线视频观看 | 国产精品国产自线拍免费 | 日韩精品专区在线影院重磅 | 国产中老年妇女精品 | 亚洲成v | 亚洲精品乱码电影在线观看 | 国产香线| 亚洲人成手机 | 激情一区 | 国产99对白在线播放 | 韩国三级激情 | 日韩国产一区二区三区在线 | 国产在线视频自拍 | 日本激情夜里视频在线观看 | 在线电影电视剧动漫综艺免费观看 | 国产一级特黄aaa大片在线观 | 天天综合 | 天美麻花视频大全 | 日本精品中文字幕有码 | 国产精品4p露脸在线播放 | 国产精品一品二区三区的使用体验 | 免费国产va在 | 精品国产一 | 操中国美女逼美女 | 日韩欧美一区二区在线精品 | a级精品国产片在线观看 | 国产日本欧美高清免费区 | 日本电影中文字幕 | 国产在线精品成人一区二区 | 国产区成人精品视频 | 热播电视剧动漫 | 日本三级免费网站 | 国产男女 | 国产精品三级在线看免费看 | 欧美在线高 | 天天综合网天天做天天受 | bt在线天堂中文最新版 | 欧美人一级淫片a免费播放 国产精品永久免费自在线观 | 手机看片日韩1024 | 欧美色欧美亚洲高清在线观看 | 国产精品r级最新在线观看 夜夜爽免费看 | 91桃色午夜福利国产在线观看 | 亚洲精品网址在线观看 | 国产又爽又黄 | 夜鲁夜鲁很鲁在线视频视频 | 婷婷激情狠狠综合五月 | 欧美交换 | 中文字幕精品一二三四五六七八 | 午夜成人影院 | 国产第二区 | 亚洲国产激情一区二区三区 | 亚洲永久精品一二三网址永久导航 | 老司机深夜免费福 | 男人操女人网站 | 亚洲综合一区二区三区四区五区 | 日韩亚洲欧美一区二区三区 | 免费观看视频 | 在线观看日产一区二区三区 | 国产视频亚洲 | 乌克兰少| 亚洲最大综合精品 | 韩剧日剧在线看 | 国产二代与美女酒店在线播放 | 日韩高清在线有码中文字幕 | 亚洲综合激情五月丁香六月 | 色国产精品妇射 | 欧美亚洲日本 | 日韩专区在线 | 亚洲欧美自| 米奇影院888奇米色99在线 | 综合自拍 | 国产乱子伦精 | 蜜桃精品一区二区三区在线观看 | 欧美ā片在线观看 | 国产精品黄页免费高清在线观看 | 91大神是啥| 精品三级影视在线免费观看 | 亚洲欧洲一区二 | 免费人成大片在线播放 | 色片在线观看 | 天堂草原影院电视剧 | 国产精品思思在线 | 香蕉有码在线视频发布 | 亚洲欧美综合精品成人导航 | 污污视频在线免费观看 | 国产精品自产拍在线观看网站 | 最新日韩欧美不卡一二三 | 国产精品高清一区二区三区不卡 | 国产一级淫片视频免费看 | 桃花视频免 | 亚洲精品综合精品自拍 | 亚洲影视日本欧美 | 无色码中文字幕亚洲精品 | 津渝完整视频线上观看 | 91福利| 91国语精品自产拍在线观 | 99热国产亚洲精品 | 国产精品视频一区 | 91sese| 视频一区在线免费观看 | 免费成人www视频在线观看 | 欧美日韩精美视频在线观看 | 欧美激情一区二区三区在线播放 | 国产一级a毛一级a在线观看 | 草莓视频在线免费看 | 青苹果乐园 | 十分钟在线观看免费直播 | 午夜亚洲中文电影 | 国产午夜在线观看免费 | 美女扒精光 | 中文字幕自拍偷拍 | 欧美精品18videose | 韩国日本三级在线播放 | 国产一区二区乱子伦在线 | 亚洲韩精品欧美一区二区三区 | 亚洲色大成 | 欧美日韩一区二区三区视频网站 | 欧美日韩不卡一区 | 一区二区三区高清视频 | 国内揄拍国 | 国产按摩院在线网站 | 国产精品猎奇另类视频 | 日日夜夜精品 | 欧美校园激| 日产精品一卡2卡三卡4卡乱码 | 欧美日韩在线第一页 | 免费影视资源大全 | 传媒视频免费在线 | 精品国产亚一区二区三区 | 757国产午夜福利在线播放 | 男女xxⅹ爽免费视频 | 日国产一区三区三区在线观看 | 日本阿v高清不卡在线 | 美女视频黄| 国产精品美脚玉 | 大片在线观看免费 | 欧美日韩国产综合视频 | 成人免费一区二区三区视 | 五月婷婷 | 美国成人影院 | 成品人视频ww入口 | 免费黄频在线免费观看 | 综合精品欧美乱伦 | 欧美高清日韩在线 | 亚洲一级大片 | 精品一线二线三线区别在哪欧美 | 国产欧美日韩一区 | 亚洲综合区夜久 | 日产成人高清视频 | 亚洲色国产欧美日韩 | 老妇小说 | 性欧美午夜高清在线观看 | 欧美一级精品视频一区 | 亚洲欧美国 | 美女胸又www | 国产伦理精品 | 免费人成在线观看网站品爱网 | 老少配videoshd乱配 | 国精产品一品二品国 | 亚洲人成影视在线观看 | 亚洲欧美日韩一区中文字幕 | 国产一区二区在线视频 | 91九色精品国产自产精品 | 国产精品青青青高清在线 | 国产高清在线a视频 | 囯产精品一区二区三区线 | 伦理片午夜视频在线观看免费 | 日本精品一区二区三区四区 | 中文字幕在线视频 | 中文字幕乱| 欧美一区二区在线观看视频 | 亚洲一区自拍视频在线 | 国产精品免费小视频 | 国产宅男z资 | 二区日韩国产精品 | 最新热门电影电视剧免费在线观看 | 午夜私人影院免费体验区 | 亚洲福利在线看 | 日产乱码一区二区 | 亚洲欧美国产一区二区三区 | 欧美激情亚洲一区中文字幕 | 国产精品爽爽va在 | 老司机99视频在线免费观看 | 国产男人午夜视频在线观看 | 亚洲自怕偷柏图 | 拍国内精品老妇 | 天天综合日韩7799 | 国产日韩欧美亚洲综合 | 精品国产午夜福利在线观看 | 内裤包裹 | 日韩不卡高清中文字幕 | 国产一级精品在线播 | 91精品国产高清一区二区 | 天美传媒果冻传媒国产日本 | 国产日韩在线视频免费播放 | 国产一级做a爱免费观看 | 欧美乱妇高清视频免欢看关 | 丰满岳乱妇一区二区三区 | 理论片在线电影 | 欧美色aⅴ欧美综合色 | 欧美草逼网站 | 姑娘色综合一二三区 | 日本高清免费aaaaa大片视频 | 最好看免费观看高清电影大全 | 手机影院| 亚洲中文字幕乱碼在线观看 | 国产欧美日韩精品第二区 | 日本一区二区三区在线播 | 区二区三区三 | 国产原创露脸视频在线观看 | 亚洲网站免费观看 | 欧美大胆a级视 | 一区二区三区国产精华护肤品 | 国产全黄三级国产全黄三级书 | 国产在线视精品在亚洲 | 亚洲中文字幕乱码熟女在线 | 户外露出在线 | 日本免费高清视频不卡 | 91免费国产在线观看尤物 | 高清在线午夜一区二区亚洲 | 日韩精品一区二区三区在线视频放 | 二区三区视频精品 | 亚洲欧美另类专区 | 亚洲成?v人片在线观看翻墙网站 | 国产午夜视频在线观看 | 国产suv精品一区二区五 | 国内精品自线在拍 | 亚洲一区二区三 | 亚洲国产品综合 | 日韩高清国产一区在线 | 一区二区免费高清在线观看国产 | 一区二区三区蜜桃 | 欧美日韩亚洲国产精品自拍 | 国产伦理片在线观看 | 视频免费1区二区三区 | 欧美精品亚洲日韩aⅴ | 欧美性video高清精品 | 欧美日韩国产综合在线小说 | 欧美日韩午夜视频在 | 99玖玖爱在线精品免费观看 | 国产一级特黄大片特爽 | 亚洲精品国产电 | 中文字幕卡通动漫精品首页 | 日本一区不卡在线观看 | 精品综合国产一区二区三区码码 | 手机在线观看日韩电影大片 | 国产偷国产偷亚洲高清日 | 成人+在线+| 国产专区日韩专区 | 国产福利一 | 色综合欧美 | 亚洲欧洲国产日产综合综合 | 91欧美精品综合在线观看 | 日韩欧美在线综合va网 | 国产高清不卡一区二区 | 国产一级精品在线播 | 国产专区在线 | 亚洲无限 | 国内精品91最新在线观看 | 性爱网在线免费 | 免费在线观看a视频 | 国产欧美精品一区二区色综合 | 国产家教老| 国产亚洲日韩欧 | 特黄特色的大片观看免费视 | 桃花视频免 | 欧美亚洲日韩国 | 国精产品一区一区三区有 | 欧美有色 | 中文字幕偷乱视频在线 | 伊人亚洲日韩欧美一区、二区 | 午夜福利国产主播露出 | 欧美视频在线观看免费最新 | 97一区二区在线播放 | 国产午夜福利免费看片 | 一区发布 | 精品一区二区夜色 | 福利吧导航| 国产亚洲一区区二 | 久爱免费观看在线网站 | 国产亚洲精品一区二区在线 | 日韩精品电影亚洲一区 | 多马影院 | 欧美日韩高清一区二区三区 | 区二区三区蜜芽 | 欧美女优在线观看br | 亚洲日韩高清在线亚洲专区 | 精品国产91高清在线观看 | 欧美日韩国产丝袜另类 | 99在线精品免费视频九九视 | 一区二区在线免费观看 | 日韩欧美亚洲一区二区在线观看 | 成人日韩精品一区二区 | 国产盗摄一区二 | 国产在线观看一区二区91精品 | 日韩欧美一区二区三区在线视频 | 含羞草国产亚洲精品岁国产精品 | 天天综合网~永久入口 | 国产绿奴视频在线观看 | 最新69成人国产精品视频免费 | 中文天堂最新版资源 | 欧美精品高清在线观看爱美 | 九九热99久| 亚洲国产精品一区 | 在线免费观看污网站 | 欧美国产激情一区二区三区蜜月 | 亚洲第一国产午夜福利电影 | 91精品国产品香蕉在线 | 二区精品在线播放 | 国产乱对白刺激视频 | 国产精品冒白 | 国产精品亚洲专区在线观看 | 丰满的女房东在线观看6 | 综合图区亚洲网友自拍 | 国产日韩精品一区二区在线播放 | 国产精品成人h片在线 | 欧美xxxx做 | 国内三级自拍小视频在线观看 | 国产婬乱视频免费 | 国产欧美国产精品第一区 | 亚洲欧洲国产日产综合综合 | 午夜性爱故事在线观看 | 国产线播放免费人成视频播放 | 欧美在线国产精品 | 看黑人巨大精品欧美一区 | 欧美一性一乱一交一视频 | 欧美激情国产 | 国产精品婷婷午夜 | 九色91 | 国产精品勾引上司在线播放 | 桃色在线观看 | 国产精品专区第一页在线观看 | 色综合婷婷在线观看66 | 日韩欧美一区二区大胸视频 | 91精品福利自产拍在线 | 国产日韩制服丝袜在线第一页 | 亚洲欧美日韩中文字幕在线一 | 亚洲综合激情五月丁香六月 | 国产乱码一区二区三区爽爽爽 | 午夜片神马影院福利 | 欧美国产精品一级二级三级 | 国产精品视频每日更新 | 美女视频黄a视频全免费网站二区 | 日本中文字幕人成中文字幕 | 中文字幕乱倫视频 | 亚洲日本va午夜在线电影 | 91香蕉成人| 亚洲国产日韩在线人高清au | 插我一区二区在线观看 | 欧美黑人在线免费观看 | 久色91 | 日韩精品一线二线三线优势 | 亚洲人成网国产最新在线 | 精品国产乱子伦一区二区三区 | 观看国产色| 神马午夜电影网手机在线播 | 国产91在| 免费高清欧美亚洲视频 | 九七九七色伦在线影院 | 大香伊蕉在人线国产最新75 | 手机看片1204日韩 | 免费国产偷人三大片视频 | 免费永久在线观看污污的网站 | 中文字幕中字在线视频 | 国产美女淫秽一区二区三区 | 欧美mv| 国产乱理伦片在线午夜观看 | 青草在线视频在 | 国产在线视频欧美一区二区三区 | 欧美性性性性 | 免费看男人j放进女人p的视频 | 亚洲ssswww视频 | 日韩精品一区二区三区大桥未 | 最近中文字幕完整版hd | 欧美人与禽zozo性伦交 | 日韩a级一片 | 欧美日韩一区二区三区在线播放 | 国产人妖ts视频在线观看 | 日本精品一区二区在线播放 | 91精品国产自产在线观看永久 | 好看的电影电视剧在线观看 | 日韩一区二区三区四区五区 | 欧美三级不卡在线播放 | 亚洲一区二区三区不卡在线播放 | 国产亚洲一区二区三区在线 | 精品一区精品二区 | 亚洲在在线观看免费视频 | 国产精品日本一区二区在线看 | 亚洲综合色区另类aⅴ | 欧美伦费免费全部午夜最新 | 香蕉国产亚洲精品va在线观 | 成人污污国产在线观看 | 朋友的妈妈2在完整有限中字第 | 在线播放69热精品 | 96精品专区国产在线观看高清 | 国产在线观看免费永久 | 国产国产人视频69免费 | 亚洲欧美精品变态另类 | 国产最新精品盗摄视频 | 日日精品国产高清国产专区 | 国产精品男人的天堂 | 欧美性大| 99re热这里只有 | 污网站免费在线观看 | 看日韩精品视频在线观看 | 国产二区三区 | 免费在线视频观看 | 国产在线观看激情 | 两个人看的视频在线观看 | 4k超清国 | 在线成人免费视频 | 亚洲欧洲| 亚洲性线免费观看 | 99亚洲直播在 | 成人影片一区免费观看 | 中美日韩亚洲高清 | 日本乱理伦片在线观看中文 | 老司机永久免费视频网站在线观看 | 日韩电影大片手机在线观看 | 日韩欧美在线不卡 | 国产亚洲综合一区柠檬导航 | 青青国产在线播放 | 性生大片免费观看网站 | 免费最新热播韩剧美剧电视剧 | 国产日本欧美高清免费区 | 亚洲中文字幕一二三区 | 极品魔鬼身| а√天堂资源8在线官网在线 | 国产成自拍亚洲精品 | 最近2025中文字 | 国产极品精频在线观看 | 最新的国 | 2025年最新高清电影 | 日本在线播放 | 色综合久| 日本护士xxxxx在线播放 | 日本一本 | 疯狂动物城在线观看 | 日日噜噜夜夜狠狠视频 | 国产日韩一区二区三区视频免费 | 免费免费麻辣 | 伊人激情一区二区三区 | 999y| 国产免费一区二区三区在线 | 国产aⅴ视频免费观看国语 91大神在线视频免费观看 | yy6080午夜理论成人影院 | 99久高清 | 国产在线精品国自产拍影院 | 国产毛多水多做爰 | 午夜在线欧美曰韩精品影 | 国产香蕉尹人在线观看视频 | 日韩中文字幕亚洲精品 | 中文字幕在线播放视频 | 欧美日韩精美视频在线观看 | 欧美偷窥清纯综 | 粗大的内捧 | 亚洲精品国产精品乱码不99 | 在线观看片免 | 欧美日韩视频在线观看第一区 | 国产a∨国片精品一区二区 欧美一区二区三区日韩免费播 | 亚洲一区欧美一区国产 | 性国产se╳ | 成人免费观看视频 | 欧美日韩亚洲国产精品自拍 | 国产视频一区二区在线观看 | 欧洲亚洲一区二 | 国产午夜福利精品一 | 国产人成视频在线观看 | 青草视频线路 | 中文字幕一区二区三区精彩视频 | 99精品| 亚洲国产网站在线观看 | 欧美亚洲校园第一页 | 成品人视频ww入口 | 最近中文字幕免费高清mv视 | 欧美一区二区电影免费观看 | 男人猛躁进女人成人免 | 永久在线免费观看美女热比网站 | 日本欧美午夜三 | 美女大黄三级视频在线观看 | 色依依亚洲一区在线观看 | 免费中文 | 男女超爽视频免费播放 | 欧美不卡视频一区发布 | 九九精品视频国产 | 伊人影视在线观看日韩 | 二区三区欧美精品在线观看 | 不卡电影网 | 十分钟在线观看免费直播 | 精品亚洲成a人在线看片 | 欧美日韩国产综 | 天天看片高清观看免费国产 | 国产一区二区在线观看动漫 | 亚洲综合精品一区二区三区 | 国产在线ts | 国产视频网站在线观看 | 911亚洲精品国内自产 | 亚洲精品成人一区二区www | 亚洲欧美一区二区综合精品 | 亚洲日韩国产一区二区三区在线 | 亚欧洲精品在线视频免费观看 | 中文字幕视频二区 | 三年片中国在线观看免费大全 | 中文自拍日本国产 | 国产精品综合在线观看 | 777国产偷窥盗摄精品1 | 偷拍视频 | 中文字幕第1页精品一区 | 二区在线播放 | 国产精品v片在线观看不卡 国产亚洲精品午夜福利 | 国产精品福利自产 | 欧美在线观看精品国产 | 精品精品国产国产 | 国产免费中文字幕v在线 | 亚洲精品中文字幕视频网站 | 国产性爱在线观看 | 亚洲欧美 | 乳肉豪妇荡乳在线观看 | 色一情一乱一伦一区二区三区 | 一区二区三区四区视频 | 日本a级网站在线观看 | 国产隔着超薄丝袜进入 | 国产精品ⅴa在线观看 | 国产足控脚交在线观看 | 亚洲日本在线播放视频 | 免费动漫在线观看 | 蜜桃视频一区二区三区在线观看 | 中文字幕影院 | 国产午夜亚洲精品午夜鲁丝片 | 精品成人一区二区 | 性猛交╳xxx乱大交 欧美午夜理伦三级在线 | 免费国产a国产片精品 | 精品日韩产品 | 99精品偷拍视频一区二区三区 | 66lu国产在线观看 | 亚洲国产精品综合小说图片区 | 精品成人一区二区三区免费视频 | 日韩一区二区三区在线观看 | 欧美国产午夜福利院 | 亚洲欧美| 午夜福利国产在线观看1 | 国产精品精品国内自产拍 | 日韩欧美国产动漫在线 | 中亚洲文日韩一区 | 成人午夜污污在线观看网站 | 国产成精品 | 国产亚洲一区二在 | 亚洲色成人www永久网站 | 好吊视频一区二区三区 | 色国产综合免 | 一区二区三区蜜桃 | 在线观看最新国产专区 | 国产乱码一区二区三区爽爽爽 | 97影院午夜午夜伦不卡 | 最近更新在线中文字幕 | 三区视频在线 | 性xxxxx欧美 成人妇女免费 | 一二三区免费视频 | 亚洲欧美另类在线视频 | 91手机国产在线网站 | 午夜不卡影院 | 国产第二页页在线播放 | 亚洲色成人www永久网站 | 三级中文字幕永久在线视频 | 国产黄a三级三级看三级 | 国产不卡高清 | 成年人免费视频软件 | 国产午夜福利在线观看视频 | 国产精品大片大片看大 | 超薄肉色丝袜一区二区 | 国产欧美日韩亚洲中文高 | 欧美人成在线观看网站高清 | 国产香蕉大片在线视频 | 2025精品国产自在现线看 | 夜夜爽一区二区三区精品 | 欧美日韩精品一区二区在线观看 | 神马影院88 | 92看片淫黄 | 欧美日韩不卡一区 | 亚洲精品综合精品自拍 | 欧美三级不 | 99国产精品婷婷 | 国产精品高清在线欧美 | 三级三级三级a级全黄三电影 | 国产亚洲精品资源在线 | 免费视频人| 欧美激情综合网 | 国产人成视频在线免费观看 | 国产视频91尤物在线观看 | 亚洲欧洲精品一二三区 | 欧美一级做a爱高清免费观看 | 香蕉在线精品视频 | 日韩不卡手机视频在线观看 | 国产亚洲欧美另类一区 | 国产精品极品露脸清纯 | 欧亚乱色熟一区二区三四区 | 永久免费a| 三年片大全在线观看免费观看大全 | 99热只有这里有99精品 | 欧美日韩中文字幕在线一区二区 | 视频在线观看免费网站 | 美女大黄三级视频在线观看 | 国产91玉足脚交在线播放 | 91精品全国免费观看老司机 | 视频在线精品 | 人人曰人人 |