C 將List資料分執行緒同步呼叫

2021-10-07 05:13:19 字數 1495 閱讀 9495

最近公司專案需要,要進行多執行緒進行耗時,特意寫了個多用途泛型類,以供後續使用

public

class

autorunthread

public

void

starttask

<

k>

(action]> allcompletetask =

null

)where k : runthreadbase

,new()

; ttt.progresschange +

=(x)

=> progressevent?

.invoke

(porgress)

; porgress.

add(ttt)

;var taskmodel =

newk()

; taskmodel.progresschange +

=(x, y)

=>

; tasklist.

add(taskfactory.

startnew((

)=> taskmodel.

taskrun

(list)))

;}if(tasklist.count ==0)

else

}private ienumerable

>

split2

(ienumerable list,

int parts)).

groupby

(x =

> x.index % parts)

.select

(x =

> x.

select

(y =

> y.item));

}}public

abstract

class

runthreadbase

public

class valuetp

private

int _index;

public

int index

set}

public

int count

}

以上為呼叫所需泛型類,呼叫示例如下:

var t =

await task.

run(()

=>

個任務皆執行完畢"))

;});

下面是類runmodelclass的示例實現

public

class

runmodelclass

:runthreadbase

progresschange?

.invoke

(count, count);}

}

C 非同步同步呼叫

本文將主要通過 同步呼叫 非同步呼叫 非同步 三個示例來講解在用委託執行同乙個 加法類 的時候的的區別和利弊。首先,通過 定義乙個委託和下面三個示例將要呼叫的方法 新增的命名空間 using system.threading using system.runtime.remoting.messagi...

C 委託的同步呼叫和非同步呼叫

委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...

C 委託的同步呼叫和非同步呼叫

委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...