System.Func<>与System.Action<>

并行编程中Func与Action委托详解
本文详细介绍了并行编程中常用的两种泛型委托:Func&lt;&gt;和Action&lt;&gt;。Func&lt;&gt;用于接收多个参数并返回一个值,而Action&lt;&gt;用于接收多个参数但不返回值。文章通过具体示例阐述了这两种委托的不同形式。

使用并行编程可以同时操作多个委托,在介绍并行编程前先简单介绍一下两个泛型委托System.Func<>与System.Action<>。

Func<>是一个能接受多个参数和一个返回值的泛型委托,它能接受0个到4个输入参数, 其中 T1,T2,T3,T4 代表自定的输入类型,TResult为自定义的返回值。
public delegate TResult Func<TResult>()
public delegate TResult Func<T1,TResult>(T1 arg1)
public delegate TResult Func<T1,T2, TResult>(T1 arg1,T2 arg2)
public delegate TResult Func<T1,T2, T3, TResult>(T1 arg1,T2 arg2,T3 arg3)
public delegate TResult Func<T1,T2, T3, ,T4, TResult>(T1 arg1,T2 arg2,T3 arg3,T4 arg4)

Action<>与Func<>十分相似,不同在于Action<>的返回值为void,Action能接受1~16个参数
public delegate void Action<T1>()
public delegate void Action<T1,T2>(T1 arg1,T2 arg2)
public delegate void Action<T1,T2, T3>(T1 arg1,T2 arg2, T3 arg3)
.............
public delegate void Action<T1,T2, T3, ,T4, ...... ,T16>(T1 arg1,T2 arg2,T3 arg3,T4 arg4,...... ,T16 arg16)


转载自:http://www.cnblogs.com/armyfai/p/3607642.html

09:45:58:967 引发的异常:“System.Data.Entity.Infrastructure.DbUpdateException”(位于 EntityFramework.dll 中) 09:45:58:967 System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SQLite.SQLiteException: constraint failed 09:45:58:967 NOT NULL constraint failed: r2TabHistoryData.Batch 09:45:58:967 在 System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt) 09:45:58:967 在 System.Data.SQLite.SQLiteDataReader.NextResult() 09:45:58:967 在 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave) 09:45:58:967 在 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) 09:45:58:967 在 System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior) 09:45:58:967 在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 09:45:58:967 在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<>c.<Reader>b__6_0(DbCommand t, DbCommandInterceptionContext`1 c) 09:45:58:967 在 System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) 09:45:58:967 在 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext) 09:45:58:967 在 System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior) 09:45:58:967 在 System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) 09:45:58:967 在 System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.Execute(Dictionary`2 identifierValues, List`1 generatedValues) 09:45:58:967 在 System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update() 09:45:58:967 --- 内部异常堆栈跟踪的结尾 --- 09:45:58:967 在 System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.Update() 09:45:58:967 在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.<>c.<Update>b__21_0(UpdateTranslator ut) 09:45:58:967 在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update[T](T noChangesResult, Func`2 updateFunction) 09:45:58:967 在 System.Data.Entity.Core.EntityClient.Internal.EntityAdapter.Update() 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.<SaveChangesToStore>b__153_0() 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction) 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass148_0.<SaveChangesInternal>b__0() 09:45:58:967 在 System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation) 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction) 09:45:58:967 在 System.Data.Entity.Core.Objects.ObjectContext.SaveChanges(SaveOptions options) 09:45:58:967 在 System.Data.Entity.Internal.InternalContext.SaveChanges() 09:45:58:967 --- 内部异常堆栈跟踪的结尾 --- 09:45:58:967 在 System.Data.Entity.Internal.InternalContext.SaveChanges() 09:45:58:967 在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 09:45:58:967 在 System.Data.Entity.DbContext.SaveChanges() 09:45:58:967 在 Asd.AgingTestRack.IMP.DB.ASD_AgingRack_db.SaveChanges() 位置 C:\Users\asd\Desktop\调试\Asd.AgingTestRack\Asd.AgingTestRack.IMP.DB\ASD_AgingRack_db.cs:行号 55: Database update error during SaveChanges. 分析错误
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值