国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

核心編程

2019-11-14 16:21:32
字體:
來源:轉載
供稿:網友

一.代碼協定

1.前提條件

Contract.Requires(bool)

.EndContractBlock();用于兼容舊if判斷代碼

2.后置條件

.Ensures(bool)

.Result<type>() 返回值

.OldValue<type>(x)返回參數的原始值

.ValueAtResult(out x)返回out參數的值

3.集合檢查

.Exists()任一項滿足條件

.ForAll()所有項滿足條件

4.恒等式條件

.Invariant(bool)

5.接口綁定協定

[ContractClass(typeof(協定實現類))]  接口特性

[ContractClassFor(typeof(接口))] 協定實現類特性

[pure] 常態操作特性

二、并行操作

1.任務

Task t1=new Task(Action<object>);創建新任務

Task t3=new Task(Func<object, result>, data);創建可返回結果的任務

//TaskCreationOptions 指定任務類型

t1.Start();開始運行

Task t2 = t1.ContinueWith(Action<Task>);后繼任務,參數為上個任務

//TaskCreationOptions 指定啟動時機

t3.Start()

t3.Wait()等待任務完成

t3.Result 提取結果

2.多任務

Parallel.For(0,9,Action<int>); 從0~9重復執行同一個方法

Parallel.For(0,9,Action<int,ParallelLoopState>); ParallelLoopState控制迭代流程

Parallel.For(0,9,Func<init>,Func<int, ParallelLoopState, init, init2>,Action<init2>); Func<init>初始化任務,第二個Func是每次迭代執行的函數,任務返回值交由Action處理。(任務數可能少于迭代次數,也就是系統會重用某一任務,而開始和結尾只有創建任務和結束任務才會調用,函數之間傳遞的信息需要特別留意)

Parallel.ForEach(source<t>, Action<t>) 同步迭代數據源

Parallel.ForEach(source<t>,Action<t,ParallelLoopState, int>) 帶迭代次數和控制參數的版本

3.終止任務

CancellationToken 控制參數

CancellationTokenSource cts=new CancellationTokenSource(); //創建控制參數

cts.Token.Register(Action); //注冊取消后執行的方法

cts.Cancel(bool);//取消任務

cts.Token //即CancellationToken

取消任務會產生OperationCanceledException異常。

cts.Token.IsCancellationRequested  是否取消任務

cts.Token.ThrowIfCancellationRequested(); 取消狀態下拋出異常

4.共享資源管理

lock(obj) 鎖定對象, 或者在該對象內部進行鎖定處理可將該對象定義為線程安全對象。

多個鎖定對象鎖定順序不一致,可能導致死鎖。(個人看法:要么保持鎖定順序一致,要么不要鎖定多個關聯對象,方法一,改造成線程安全對象,并且每個對象不在解鎖前訪問另一個線程安全對象;方法二,用單一的鎖定對象包裹關聯對象,讓它們成為一個整體(因為保持順序一致較難,或可按字典排序))。

lock(this) 危險語句,因為對象可能在對象外部被鎖定。應該用對象的私有成員做鎖定標志。

當讀取和寫入應該連續(比如避免將舊值存會已經改變了的變量中),這種有事務性要求的操作中,應該鎖住整一個過程,而不是分別鎖住讀寫兩部分(一個事務一個鎖的原則設計方法,比如提供 read() 和 readAndWrite()界面,而不是read 和 write界面)。

SpinLock 是結構版本的Monitor,性能更優。

5.計時器

System.Threading.Timer(Action<object>, obj, TimeSpan, TimeSpan)  按指定間隔調用方法

Thread.Sleep(int); 休眠指定毫秒

三、角色和授權

四.XAML

1.依賴類型

class MyDependencyObject: DependencyObject //特定基類

{ public int Value{get{return (int)GetValue(ValuePRoperty);} //基類成員GetValue

set{SetValue(ValueProperty,value);}} //調用基類成員SetValue

public static readonly DependecyProperty ValueProperty =

DependecyProperty.Register(“Value”,typeof(int),typeof(MyDependencyObject), //注冊依賴屬性

new PropertyMetadata(初值, 值變更后回調方法, 值變更前回調方法));}

UIElement 支持冒泡和隧道事件的基類

DependecyProperty.RegisterAttached() 附加屬性注冊

2.標記擴展

“{StaticResource ID}”  

等價于

<StaticResourceExtension ResourceKey=”ID” />

MarkupExtension 標記擴展的基類

[MarkupExtensionReturnType(typeof(string))]  標記擴展返回類型特性

public override object ProvideValue(IServiceProvider serviceProvider) 重載的返回函數

serviceProvider.GetService(typeof(iprovideValueTarget)) as IProvideValueTarget; 調用的查詢服務


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 京山县| 铜山县| 吉林市| 定南县| 嘉荫县| 巩义市| 云林县| 简阳市| 新晃| 海南省| 航空| 乐至县| 五河县| 河西区| 乌兰浩特市| 周口市| 宁阳县| 广德县| 兰坪| 海盐县| 龙岩市| 张家川| 金昌市| 台北县| 蒙阴县| 祁门县| 林芝县| 桐梓县| 东平县| 三河市| 怀柔区| 青海省| 临邑县| 浪卡子县| 仁化县| 外汇| 吉林省| 仙桃市| 徐水县| 四子王旗| 耒阳市|