所有這些代碼都位於最低級別的類庫中。我應該實現異步並行還是異步任務
對於下面的代碼塊,我應該換行的代碼整個身體在Task.Run(()=>{});
或是否有更好的方式來激發那些.GroupParts
的每一個?異步並行會在哪裏發揮作用?
public IGroupedParts GroupParts(GroupOption option)
{
IGroupedParts gParts = new GroupedParts();
if (this.Doors.Count > 0) { gParts.Doors = this.Doors.GroupParts(option); }
if (this.Leafs.Count > 0) { gParts.Leafs = this.Leafs.GroupParts(option); }
if (this.Sidelites.Count > 0) { gParts.Sidelites = this.Sidelites.GroupParts(option); }
if (this.Glass.Count > 0) { gParts.Glass = this.Glass.GroupParts(option); }
if (this.GlassStops.Count > 0) { gParts.GlassStops = this.GlassStops.GroupParts(option); }
if (this.Horizontals.Count > 0) { gParts.Horizontals =this.Horizontals.GroupParts(option); }
if (this.Verticals.Count > 0) { gParts.Verticals = this.Verticals.GroupParts(option); }
if (this.Sills.Count > 0) { gParts.Sills = this.Sills.GroupParts(option); }
if (this.Midrails.Count > 0) { gParts.Midrails = this.Midrails.GroupParts(option); }
...///still more code but omitted
return gParts;
}
---這裏是我講的,當我說換行的代碼整個身體與Task.Run(()=>{});
public async Task<IGroupedParts> GroupParts(GroupOption option)
{
return await Task.Run(() =>
{
IGroupedParts gParts = new GroupedParts();
if (this.Doors.Count > 0) { gParts.Doors = this.Doors.GroupParts(option); }
if (this.Leafs.Count > 0) { gParts.Leafs = this.Leafs.GroupParts(option); }
if (this.Sidelites.Count > 0) { gParts.Sidelites = this.Sidelites.GroupParts(option); }
return gParts;
});
}
的一個例子---我沒有一個並行例子這就是爲什麼我尋求幫助...
什麼是你的平臺,每個人(通常)需要多長時間? –
每個:00:00:00.0100005 全部:00:00:00.0140008 這是一個頁面,可以放入一組藍圖中。 關於它的事情是,這是一整套頁面進入一卷圖紙可能是15 - 50頁。 此外,這是繪製每個頁面所需的所有信息,每個頁面都是位圖,所以我只是想在任何地方修剪。 –
目前這不是在一個服務器平臺上,這個庫將有它自己的服務器加強。 –