使用使用 int 参数调用的 Action 初始化任务
Initializing a task with an Action that invokes with an int parameter
我的 class 中有以下构造函数,它初始化我的任务:
public ReportGeneratorThread(Func<int, bool> getPermission, Action<object> a)
{
this.action = a;
this.t = new Task(this.action = this.InvokedAction, this.cancellationToken);
this.getPermission = getPermission;
}
任务将调用的 InvokedAction 方法定义如下:
private void InvokedAction(object obj)
{
Debug.WriteLine(DateTime.Now.ToLongTimeString() + " Task " + this.t.Id + " has STARTED Generating a report");
this.GenerateReport();
throw new ArgumentException("For testing purpose");
}
当我想使用 int 而不是对象调用此方法时出现问题,因为任务不接受它。有没有什么方法可以用一个 int 值调用这个方法:
Action<int>
你能在调用之前box你的int吗?
int i = 123;
object o = i;
因为你不能用对象类型的参数调用Action<int>
你需要手动转换它。请注意,如果要求是其他方式,那会很好 - 您可以轻松地传递 Action<object>
,其中 Action<int>
是预期的。
... new Task( v => intAction((int)v),...
如果您不能保证参数始终为整数,则可能需要处理转换异常。
我的 class 中有以下构造函数,它初始化我的任务:
public ReportGeneratorThread(Func<int, bool> getPermission, Action<object> a)
{
this.action = a;
this.t = new Task(this.action = this.InvokedAction, this.cancellationToken);
this.getPermission = getPermission;
}
任务将调用的 InvokedAction 方法定义如下:
private void InvokedAction(object obj)
{
Debug.WriteLine(DateTime.Now.ToLongTimeString() + " Task " + this.t.Id + " has STARTED Generating a report");
this.GenerateReport();
throw new ArgumentException("For testing purpose");
}
当我想使用 int 而不是对象调用此方法时出现问题,因为任务不接受它。有没有什么方法可以用一个 int 值调用这个方法:
Action<int>
你能在调用之前box你的int吗?
int i = 123;
object o = i;
因为你不能用对象类型的参数调用Action<int>
你需要手动转换它。请注意,如果要求是其他方式,那会很好 - 您可以轻松地传递 Action<object>
,其中 Action<int>
是预期的。
... new Task( v => intAction((int)v),...
如果您不能保证参数始终为整数,则可能需要处理转换异常。