国产凹凸在线-国产拗女一区二区三区-国产白白视-国产白领-国产白拍-国产白丝jk被疯狂输-国产白丝喷-国产白丝在线

金喜正规买球

如何解決窗體假死

轉帖|其它|編輯:郝浩|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
午夜家庭影| 欧洲中文日韩亚洲精品视频 | 韩国三级中文字 | 日本黄一级日本黄二级 | 国产乱码精品一区二区三区四 | 好看的剧免费在线观看 | 影视中文日本亚洲 | 国产精品视频第一区二区三区 | 91福利精品老师国产自产在线 | 国产欧美日韩综合视频在线 | 91探花在线观看 | 欧美日韩国产综合视频在线观看 | 成人涩涩小片视频日本 | 六月婷婷国产精品综合 | 亚洲天堂一区二区 | 日本在线a∨视频网 | 日韩成人深夜欧美一区 | 日韩精品中文一 | 精品国产品香蕉在线观 | 日本熟女性爱中文字幕视频 | 欧美日韩在线第一页 | 国产精品亚洲不卡一区二区 | 国产乱子伦对白视频 | 国产一区二区三区欧美精品 | 费精品国产一区国产精品剧情在线 | 国产999在线观看 | 亚洲国产综合精品中久 | 97国产婷婷综合在线视 | 欧美亚洲韩国日本一区 | 91免费在线看 | 国产一二| 日韩精品区一区二区三vr | 视频免费热播在线观看 | 男女日b视频| 韩国电影a级一区二区三区 成人亚洲精品91专区高清 | 高清影视电视剧免费在线观看 | 免费视频大片在线观看 | 三级国产4国语三级在线 | 91每日更新在| 日本aⅴ日 | 免费在线观看最新高清电影 | 日韩一区在线免费 | 日韩欧美国产精品第一页不卡 | 国产精品汇聚精彩 | 国产乱理伦片在线观看夜 | 靠逼视频一区二区三区 | 91青青青 | 私人影视网 | 精品亚洲欧美中文字幕在线看 | 国产乱码精品一区二区三区播放 | 国色天香在线观看 | 男人的天堂人人干香蕉 | 欧美乱码精品一区二区三区卡 | 玖草视频国产一区二区三区 | 92福利国产三区视频 | 日韩在线欧美国产 | 欧洲免费观看 | 日本在线不卡v二区 | 亚洲欧美综合精品成 | 48国产吹潮在线观看 | 欧美嫩交一区二区三区 | 国产欧美日韩在线视频 | 日日摸处处碰夜夜爽 | 欧美大成色www永久网站婷 | 国产乱理伦片在线午夜观看 | 国产福利在线观看免费第一福利 | 欧美精品一区二区三区在线播放 | 成人国产精品秘果冻传媒在线 | 成人国产精品一区二区八戒网 | 日韩一品二品三品 | 国产日韩欧美另类重口 | 精品国内外视频在线观看 | 国语对白露脸在线播放 | 亚洲欧美日韩精品中文乱码 | 中文字幕一区二区三区日韩精品 | 欧美精产国 | 国产美女视频免费观看的网站 | 日韩gv国产gv欧美旡码天堂 | 久99国产精品成人欧美日韩 | 中国免费高清视频在线观看 | 中文字幕午夜福利片亚洲 | 亚洲日本欧美综合在线一 | 日本一本无道码日韩精品 | 亚洲欧美国产国产一区二区三区 | 精品含羞草免费视频观看 | 欧美va欧美va在线 | 日本乱码视频中文字幕亚洲一区 | 精品免费看国产一区二区 | 很黄很色的免费视频在线观看 | 日韩欧美一区二区大胸视频 | 勃起又长又黑又粗毛又多 | 国产欧美va欧美va日韩精品 | 成人性做爰aaa | 大黑人交xxxx | 中文字幕亚洲综合小综合 | 日韩一区精品视频在线看 | 日本一二三区成人 | 亚洲日本中文字幕一区二区三 | 欧美一区二区三区四区在线观看 | 久青草久青草高清在线播放 | 欧美日韩国产色一区二区 | 青草青草久 | 成人高清在线观看播放 | 日韩一区二区三区在线观看 | 羞羞影院成人午夜爽爽在线 | 欧美精品一区二区在线观看 | 国产精品视频分类一区 | 日本妇人成 | 亚洲欧美精品网站在线观看 | 电影在线观看免费 | 欧美地区一二三区 | 国产精欧美一区二区三区 | 日本在线视频一区二区免费 | 国产成a人亚 | 中文字幕一区二区三区日韩精品 | 电视剧大全免费全集观看 | а√新版天堂资源中文8 | 99视频精品全部品全正 | 国产男女插插一级 | 国产精品毛多多 | 亚洲丝袜一区二区 | 欧美黑人疯狂性受 | 国产制服精品一区二区视色 | 国户一区二区免费视频 | 国产午夜免费福利红片 | 国产精品一区二区 | 国产原创91| 亚洲人成中文字幕在线观看 | 国产影视乱伦日本 | 91国语福利影院 | 国产免费h无 | 午夜激情经典青柠影院 | 欧美福利的日韩片 | 日韩成人在 | 国内偷视频在线观看 | 国产日韩欧美亚洲第一区 | 国产va免费不卡看片 | 激情欧美日韩一区二区 | 日本中文一二区有码在线 | 成全动漫视频观看免费下载 | 亚洲欧美乱综合图片区小说区 | 不卡国产福利在线观看 | 高清欧美日韩一区二区三区在线 | 国产精品自在线免费 | 日本欧美视频在线看 | 欧美亚一区二区三区不卡视频 | 欧美精品v| 国产精品乱码一区二区视频 | 日本电影一区二区 | 欧美日韩综合aⅴ图片 | 精品国产自在精品国产精华天 | 区三区精品视频 | 日本久一道中文一区二区 | 欧美特黄特色 | 日韩亚色五月 | 欧美曰韩免费一级在线 | 欧美日韩一本到手机视频观看一区 | 国产精品素人福利 | 国产精品美女 | 国产福利影 | 国产精品亚洲午夜一区二区三区 | 人人影视 | 国产自在现偷国产精品国产日韩 | 91国产最| 亚洲人成网线在线播放va | 日本系列1页亚洲系列 | 精品国产1区 | 日本一区二区三 | 国产精品v| 国产人成精品综 | 羞羞视频免费看网站 | 国产区日韩精品一区二区三区 | 字幕在线中文 | 亚洲国产变态另类天堂 | 亚洲一区日韩高清中文字幕 | 国产欧美日韩不卡一区二区三区 | 日韩精品图片观看网址大全下载 | 爱情岛论坛| 日本亚洲色大成网站www久 | 9191国 | 人善交videos欧美3d | 日本一本二本三区高清视频 | 国产初高中生视频在线观看 | 日韩午夜看片成人精品 | 97精品视频在线 | 国产日本在线播放 | 日本无遮羞免费的动漫网 | 日韩精品一区二区三区vr | 日本最大色倩网站www不卡 | 最新院线大片抢先看 | 免费高清欧美亚洲视频 | 欧美高清在线播放 | a级国产乱理伦片在线播放 夫妻之间免费观看完整版 精品女同 | 国产一区免费观 | 九一国产在线观看 | 安全绿色的在线电 | 一区二区三区在线观看视频 | 欧美性插xxxxxx | 国产羞羞羞视频在线观看 | 日美妇视频一区 | 二区三区 | 日本a∨| 午夜私人影院免费体验区 | 日本国产精品 | 天天色天天综合网 | 亚洲日韩a | 日韩女同性恋一区二区三区 | 国产91无| 囯产目拍亚洲精品dd6866 | 99日韩a及免费视频 日产国产精品日韩精品 | 成年人在线播放视频 | 欧美a级大片 | 亚洲欧美日韩中文字幕在线一 | 521国产精品网站在线观看 | 依依成人影院在线观看 | 水蜜桃视频网站在 | 日韩一区二区三区高清中文字幕 | 熟女精品www久| 中文字字幕乱码无线精品精品 | 日韩欧美一级视频网站 | 日韩电影院| 国产在线观看免费视频在线 | 视频二区不卡 | 国色天香社区影院在线观看 | 三年片在线观看免费播放大全电影 | 日本高清视频www | 国色天香社区影院在线观看 | 国产精品网曝门免费视频 | 在线日韩欧美一区二区三区 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲丝袜制服欧美另类 | 欧美亚洲日韩国产网 | 国产高清视频一区二区 | www一区二区乱码www | 国产精品hd免费观看 | 久青草久青草视频在线观看 | 国产精品天天看特色大片不卡 | 欧美日韩国产一区二区三区 | 伦理片午夜视频在线观看免费 | 日本妞xxxxxx| 158国产手机视频大全 | 久色91 | 里啪啦影院大全 | 日本精品一区二区三区 | 国产日韩综合在线视频 | 丰满多毛的陰户 | 999在線視頻精品免 欧美国产日韩高清在线 | 国产精品三级一区二区秒拍 | 国产欧美视频综合二区 | 欧美亚洲人成网站在线观看刚交 | 日韩电影网 | 国产在线精品拍揄自揄免费 | 成人欧美精品资源在线观看 | 日韩好看中文字母 | 色综合中文字幕色综合激情 | 日韩欧美一区二区三区中文精品 | 最近中文字幕视频高清 | 欧美日韩生活片 | aⅴ片在线观看 | 亚洲欧美日韩国 | 99精产国品一二三产区区 | 日韩欧美在线视频 | 三上亚悠在线精品二区 | 国产欧美在线高清 | 精品福利在线观看 | 新91网页版 | 免费人成在线播放网站 | 国内精品免费久 | 99亚洲精品高清一二区 | 精品在线视频播放 | 欧美日韩在线播放一区二区三区 | 人人色在线视频播放 | 成人午夜视频一区二区国语 | 日本二区在线中文字幕 | 国产精品成熟老女人 | 丰满多毛的大隂户视频 | 日本高清一区二区三 | 日韩激情不卡一 | 国产欧美在线高清 | 亚洲春色一区 | 字幕在线| 插我一区二区在线观看 | 国产精品成熟老妇女 | 亚洲成a人v欧 | 日韩、欧美、中文三级 | 国产又污又爽又黄又刺激网站 | 在线观看的资 | 日产精品bd在线观看 | 国产精品天天看 | 国产农村乱子伦精品视频 | 日本一道在线播放高清 | 偷拍视频一区二区三区 | 成年片色大黄全免费网站观看 | 91豆奶视频 | 国产清纯91天堂在线观看 | 日韩在线精品一区二区三区 | 成人欧美一区二区三区在线 | 国产爱情岛在线观看视频 | 欧美亚洲高清国产一区二区三区 | 国产日韩精品欧美一区喷水 | 99久在线国内在线播放 | 国产最新看片在线 | 热99re6久精品国产首页青柠 | 91成年人免费视频 | 日韩在线欧美国产 | 日韩欧美国产精品免费一二 | 国产亚洲视频中文字幕97精品 | 日韩欧美高清一区 | 成人免费一区二区三区视频 | 亚洲欧美精品中文字幕 | 欧美bbbwbbbw肥妇 | 亚洲专区日韩专区在线观看 | 日韩欧美中文字幕出 | 国产a级又黄又硬又湿刺激软件 | 国产无你高清在线观看aⅴ 色国产精品妇射 | 老熟女老太婆爽 | 日韩精品一区二区三区中文在线 | 欧美a级v片不卡 | 亚洲成a人v欧美综 | 99热这里只有免费国 | 亚洲成a人片在线播放 | 国产在线看片免费人成视频 | 国产精品直播手机在线 | 免费高清一二三区日本 | 色琪琪原网站亚洲香蕉 | 午夜dj免费视频在线观看 | 欧美性色欧美a在线在线播放 | 亚州一级在线播放 | 亚洲欧洲淘宝天堂日本 | 日韩一区二区三区在线观看 | 精品成人一区二区三区电影 | 亚洲国产欧美日韩v一区二区 | 日本视频一区在线播放 | 国产精品美女网站在线观看 | 欧美大胆a| 欧美级韩国三级日本三级 | 香蕉在线一本大道 | 在线a亚洲视频播放在线观看 | 中文字幕日韩专区 | 免费国产最新进精品视频 | 国产午夜福利一区二区三区在 | 中文字幕在线免费 | 欧美日韩一区二区三区视频在线 | 国产手机自拍视 | 日韩高清第一页 | 国产精品一区二区三区免费视频 | 两性色午夜视频免费老司机 | 男男做肉爱视频在线观看 | 亚洲911国产精品 | 亚洲男人片片在线观看 | 在线观看午夜福利片日本 | 日本一二三区视频在线 | 国产亚洲欧美另类第一页 | 欧洲+日本+中国 | 国产精品日韩一 | 国产一区二区三区在线精品专区 | 成+人+亚洲+综合天堂 | 天天色综合| 九九热爱视频精品视频 | 日本特黄特黄刺激免费大片 | 欧美又粗又 | 大色综合色综合资源站 | 国产精品视频一区视频二区 | 亚洲欧美日韩激情在线观看 | 国产在线欧美日韩精品一区二 | 成人精品天堂一区二区三区 | 亚洲一区二区三区免费视频 | 精品欧美一区二区 | 观看美国 | 成人日本一区二区 | 国产日韩一区二区精品在线播放 | 极品美女在线观看国产一区 | 小罗莉极品一线天在线 | 91免费国产高清观看 | 免费观看电视剧全集在线播放 | 国产欧美日韩精品不卡在线观看 | 国产精品日本亚洲欧美 | 国产玉足榨精视频在线 | 欧美精品一二三区 | 日韩乱码精品中文字幕不卡 | 日韩欧美一区二区3d视频 | 女同性另类一区二区三区视频 | 欧美推油无尺码 | 亚洲欧美一区二区不卡 | 亚洲一卡2卡3卡4 | 日韩一区二区三区在线观 | 亚洲一区二区在线观看黄 | 日本欧美一 | 日韩一级簧片 | 97午夜理伦 | 欧美性爱视频手机在线免费播放 | 手机看片日韩1024 | 成人精品视频一区二区三区尤物 | 亚洲国产在线精品国自产拍 | 免费国产一区二区不卡在线 | 亚洲欧美网站 | 浅田真美 | 精品国产一区二区三区四区vr | 日韩精品大秀视频在线观看 | 国产精品日本一区二区不卡视频 | 爽爽狠狠婷婷97 | 99精品视频在线观看免费播放 | 国产91高清免费 | 日韩淫片一区二区 | 国产男女猛烈视频在线观看 | 色屁屁一区二区三区视频国产 | 亚洲人色大成年网站在线观看 | 韩国日本免费不 | 精品成人欧美大片 | 成人影视福利 | 91九色私密保健 | 免费片在线观看 | 国产精品成人aaaaa网站 | 欧美a∨在线观看 | 国产午夜不卡精品午夜电影 | 欧美经典日韩精品 | 精品欧美一区二区三区在线 | 国户一区二区免费视频 | 午夜a级理论片在线播放可米 | 国产视频网站在线 | 日本乱偷 | 国产欧美亚洲专区在线 | 免费一区二区三区视频 | 欧美另类视频在线观看 | 成全视频在线观看大全腾讯地图 | 国产欧美一区二区精品久 | 国产欧美精品一区二 | 日韩视频在线观看二区 | 日本欧美高清乱码一区二区 | 国产亚洲新免费视 | 国产在线观看中文字幕 | 欧美自拍另类欧美综合图区 | 国产免费a视频网站在线观看 | 日本不卡一二三区视频免费 | 国产精品亚洲视频在线观看 | 欧美日韩在线播一区二区三区 | 午夜欧美 | 欧美亚洲国产日韩图片 | 国产放荡对白视 | 强奷乱码中文字幕熟无 | 国产愉拍99线观看 | 欧美精品成人3d在 | 北岛玲日韩精品一区二区三区 | 91精品欧美一区二区综合在线 | 国产高清在线视频一区二区三区 | 国产日韩欧美视频免费看 | 欧美国产中文动漫日韩欧美在线 | 成人欧美视频在线观看 | 91精品福利资源在线观看 | 日本在线看 | 日本亚洲专区 | 国产卡戴珊在线根本喂不饱2 | 成人午夜福利免费 | 欧美综合日韩 | 免费级人成大片在线观看 | 欧美亚洲日韩国产综合视频网站 | 日韩美女色高清在线看 | 日本精品不卡在线观看 | 国产短裙黑色丝袜在线观看下 | 国产日韩污视频在线观看 | 日本按摩强伦姧在线观看 | 日本亚洲中文字幕不卡 | 97精品国产自在现线免费 | 欧美日韩一卡二卡 | 国产精品小电影在线观看 | 东京干影院| 文中字幕一区二区 | 免费高清手机在线观看 | 二区三区欧美精品在线观看 | 中文字幕亚洲不卡在线亚瑟 | 欧美一区区三区四区五区在线观看 | 亚洲xxxx在线播放 | 国产免费h无 | 国产精鲁鲁网在线视频 | 成人国产欧美精品一区二区 | 秋霞电影| 国产精品三级在线播放 | 国产免费v片在线观看可下载 | 中文字幕欧美在线观看 | 免费观看网站 | 国产精品成人自拍 | 欧美不卡一区二区三区 | 日韩精品一线二线三线优势 | 国产精成a品人v在线播放 | 国产精品产品视频 | 国在线视频 | 日本老司机午夜福利在线免费 | 女人与动zz | 精品一区二区三区国产在线观看 | 国产永久免费高清视频 | 亚洲成a人片在线v观看 | 日韩成人激情影院 | 中文字幕在线不卡精品视频99 | 91夫妻小视 | 日本亚洲专区 | 国产一区二区三区四区五区加勒比 | 国产免费蜜桃视频网 | 国产网曝门亚洲综合在线 | 国产一级h片普通话在线观看 | 欧美视频综合二区 | 手机在线观看 | 国产尤物一区二区在线播放 | 欧美在线人成北岛玲 | 日日插人人插天天插 | 欧美日韩不 | 亚洲精品亚洲字幕 | 精品一区二区三区日韩 | 精品国产 | 97久视频精品视频在线老司机 | 亚洲人成电影在线播放 | 国产午夜亚洲精品不卡影院 | 偷拍视频一区二区三区 | 日韩午夜顶级在线观看 | 国产v亚洲v日韩v欧美v中文 | 亚洲精品国产精品乱码视色 | 精品国产高清自在线看 | 国产免费一区二区三区在线看 | 中国亚洲呦女专区 | 亚洲精品精华液一区二区 | 欧美日韩视频在线观看第一区 | 国产不卡免费视频 | 一出一进一爽一粗一大视频免 | 亚洲欧美suv精品 | 国产精品秘吴 | 玖玖玖视频在线观看视频6 日韩精品搭讪在线视频播放 | 日本国产性爱观看视频 | 日本免费高清线视频免费 | wwwwxxxx国产 | 国产一区女优在线观看 | 国产性猛交xxxx乱大交 | 国自产拍偷拍福 | 亚洲伊人色 | 国产欧美va欧美va香蕉在线 | 免费影视资源大全 | 精品福利枧频网站 | 国产高清在线观看视频一线 | 欧美不卡在线 | 国产婷婷综合在线精品尤物 | 亚洲人成日韩中文字幕不卡 | 老师脱了内裤让我进去 | 91成人国产网站在线观看 | 欧洲亚洲一区二区三区 | 国产又粗又猛又爽又黄 | 国产精品不卡片视频免费观 | 日产无人区一线二 | 在线观看欧美影 | 丝袜图片 | 国产白领| 亚洲无线码| 日韩专区亚洲精品 | 91视频成人 | 69精品人伦一区二区三区 | 成人欧美日韩在线网址观看 | 8天堂资 | 国产日韩欧美视频等最新内容! | 玖玖爱精品免费在线视频 | 亚洲欧美国产日韩精品 | 日韩午夜福利在线免费观看 | 国产福利导 | a4yy在线播 | 小小的日本高清在 | 国产综合视频一区二区三区 | 成人精品国产日本语音 | 国产一区精品普通话对白 | a看一级特黄a大片 | 日产中文字乱码卡一卡二卡 | 九九热精品在线视频观看 | 国产国产东北 | 青青成人福| 国产精品综合在线观看 | 国产又粗又爽视频 | 免费的又色又爽又黄的片 | 成人乱码一区 | 欧美视频一区二区专区 | 国产又黄又大又粗又硬又猛樱花 | 大肉大捧一进一出 | 国产91丝袜在线播放动漫蜜月 | 美女被肏翻白眼视频在线观看 | 成人精品免费视频在线观看 | 91尤物视频在线 | 国产精品综合视频一区二区 | 91影视网 | 国产情侣普通话对白发布 | 欧美一级影院在线观看 | 一本一区二区三 | 爽死七七 | 国产欧美精品一区二区三区四 | 国产在线videos | 日本黄本道一区二区在线观看 | 噼里啪啦的视频免费观看 | 依人成人 | 日韩欧美一 | 日本乱码伦电影 | 不卡免费观看 | 午夜免费福利片观看 | 亚洲福利中文字幕在线网址 | 蜜桃电影网 | 九九热线有精品视频 | 97视频| 国产a网 | 好看动漫 | 精品一区二区6 | 电影在线观看免费 | 一区二区三区四区免费视频 | 国产女人喷潮在线观看视频 | 国产精华液和欧美的精华液的区 | 中日韩精品一区二区三区成人 | 欧美激情狂野变态xxxx视频 | 日本韩国欧美三级在线 | 99精品蜜臀蜜 | 免费人成在线观看vr网站 | 国产亚洲欧美手机在线观看 | 欧洲一卡2卡三卡4卡免费视频 | aⅴ手机看片高清 | 亚洲aⅴ精品国产首次亮相 日韩美女aa高清在线观看 | 国产一级特黄aaa大片在线观 | 国产精品簧片mv | 国产人成精品香港三级在线 | 国产福利一区二视频播放 | 免费人成视网站在线观 | 国产高清盗摄系列在线 | 99re6热在线精品视频观看 | 欧美三极婬片网站 | 好看的日韩电影 | 亚洲aⅴ乱码一区二区波多野 | 91成人午夜性a一级真人片 | 二区三区在线视频 | 极品美女一区二 | 日本一本为道高清视频 | 精品国在线观看视频在线播放 | 国产精品成人观看视频免费 | 欧美性爱中文字幕无 | 国产午夜福利在线不卡 | 亚洲精品中文字幕不卡在线 | 中文字幕日韩一区二区不卡 | 亚洲天堂一区 | 绿巨人视频app汅在线 | 欧美日韩亚洲中文综合视频 | 国产乱码精品在线播放 | 日韩欧美精品一区二区二区不卡 | 朝鲜女人大白屁股ass孕交 | 亚洲精品在 | 三级国产久 | 国产高清视频一区免费观看 | 天天躁日日躁狠狠很躁 | 国产午夜亚洲精品不卡免下载 | 91香蕉下载 | 偷拍美女厕所 | 大地影院mv高清在线观看免费 | 色天天综合色天天天天看大 | 日本女优在线口爆二区三区 | 女女同性一 | 日本道免费精品一区二区 | 国产微拍精品一区一再猛点 | 专区中文字幕视频专区 | 日本特黄特色大片免费在线观看 | 亚洲日本一区二区 | 自偷自拍亚洲综合精品 | 成人a大片在线观看 | 国精品产露脸偷拍视频 | 最新国产一区二区三区在线 | 日韩欧美精品综合在线观看 | 国产精品成人观看视频国产奇米 | 国产精品自产拍在线观看花钱看 | 九七九七色伦在线影院 | 国产亲子 | 综合乱伦自拍三 | 国产老熟女乱子人伦视频 | 免费国产污网站在线观看 | 精品国产香蕉在线播出 | 国产专区手机在 | 日韩性爱视频在线观看 | 国产伊人 | 欧美精品视频免费观看 | 国产一区二区三区在线电影 | 电视剧大全免费全集观看。 | 丰满老熟好大bbb | 亚洲色大成网站www永久网站 | 国语对白精品一区二区在线观看 | 国产精品不卡视频 | 日本亚洲欧美国产日韩ay | 99这里只有精 | 成人欧美s视频在线观看 | 97中文字幕在线 | 国产v综合v亚洲欧 | 国产亚洲这里只有精品 | 欧美激情在 | 色片在线观看 | 国产又粗又长又黄又猛又爽视 | 日本一本二本三区免费2025 | 精品国产理论在线进入 | 亚色九九九全国免费视频 | 亚洲综合精品网站在线观看 | 激情自拍三级文学视频激情 | 男人添女人30分钟免费 | 国产亚洲欧美日韩综合另类 | 在线观看欧美a级精品视频 欧美一级在线观 | 中文国产欧美在线观看 | 国产人澡人澡澡澡人 | 中文字幕日韩专区下载 | 极品一区二区三 | 日本香蕉一区二区在线观看 | 精品一区二区三区3d动漫 | 欧美日产国产精选99 | 成年男女视频网站 | 国产欧美日韩精品视频一区二区 | 国产中文字幕在线点播 | 国产东北肥熟老胖女 | 精品自拍中 | 国产高清在线免费观看 | 色两性午夜视频免费观看 | 国产精品福利电影一区二区三 | 一级a性色生活片 | 成人啪精品视频免费网 | 国产一卡2卡三卡4卡在线观看 | 国产高清一区二区三 | 国产一级无 | 欧美一区二区三区精品国产 | 亚洲第一影院中文字幕 | 青青青在线播 | 成年人24小时在线免费观看视频 | 午夜伦理电影网电影午夜伦理 | 韩国三级中文字 | 日本午夜欧洲亚洲精品国产 | 无人区一码二码三码四码区 | 日本免费最新高清不卡视频 | 大香伊蕉人 | 日韩国产卡一卡二卡三卡四 | 精品国产一区在线观看 | 不卡在线观看 | 最近免费字幕中文大全 | 国产精品亚洲欧韩在线 | 泰国一级特黄在线观看大片 | 精品乱伦影视 | 国产精品成人 | 99精品视频观看 | 国产一区二区在线观看免费 | 欧美性色欧美a在线观看 | 成人永久免费视频网站在线观看 | 欧美日韩午夜在线视频 | 三年片在线 | 热播影视大全 | 国产亚洲精品一级在线观看 | 亚洲欧美中 | 成年人影片免费看 | 东京道一本热大交乱 | 国产精品高清一区二区不卡乱 | 亚洲中文字幕人成乱在线 | 欧美国产第一页 | 中文字幕一区在线观看 | 九色91| 琪琪午夜福利免费院 | 欧美国产在线精品一区二区 | 一区二区日韩视频九一蜜桃 | 91高清免费国产自产拍不卡 | 国产精品视频网站丝袜 | 国产大奶子在线播放免费 | 精品日韩视频一区二区三 | 国产精品福利电影一区二区三 | 欧美日韩在线播一区二区三区 | 日本伦理电影免费观看 | 欧美视频亚洲视频日韩动漫 | 精品字幕亚洲一区二区三区 | 欧美自拍偷拍一区二区 | 日本中文字幕乱码在线精品 | 国产高清在线精品一区小说 | 国产一级做a爰片在线 | 两个人看| 国产精品精品国产 | 成人欧美激情亚洲日韩蜜臀 | 银杏影视| 亚洲三级综合在线 | 国产乱码一区二区三区爽爽爽 | 国产区综合 | 国产又粗又黄又爽的大片 | 国产亚洲精品激情都市 | 欧美多人乱大交xxxxx变态 | 很黄很色的免费视频在线观看 | 国产一区二区三区色淫影院 | 国产精品自线在线播放 | 国产精品视频一区二区三区不卡 | 欧美色精品视频在线观看九 | 国产最新电影在线观 | 99视频在线精品66 | a天堂中文在线天堂资源中文 | 99精品免费视频在线观看 | 18所黄| 精品一线二线三线在线 | 91精彩视频在线观看 | 成人精品玖玖资源 | 欧亚乱色熟一区二区三四区 | 国产又黄又猛又粗又爽的 | 精品日韩一区 | 欧亚成人 | 中文中幕a在线 | 免费国产午夜高清在线视频 | 一区二区三区四区无限乱码 | 国产精品乱码一二三区 | 欧美国产日韩一区二区三区 |