2015-10-06 99 views
1

我在类下面的构造int参数,初始化我的任务调用一个操作的任务:初始化用与

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> 
+0

请显示失败的代码。 –

+0

它不会失败,因为它现在。新的Task()方法不接受将int作为lambda表达式的操作。我只是想用int作为参数调用方法 –

回答

3

既然你不能叫Action<int>与对象类型的参数,你需要将它手动转换。请注意,如果需求是其他方式,那么可以很好 - 您可以轻松地通过Action<object>,其中Action<int>是预期的。

... new Task(v => intAction((int)v),... 

如果您无法保证参数始终为整数,那么您可能需要处理转换异常。

0

你能box的诠释?

int i = 123; 
object o = i; 
+0

问题是我需要用另一个类中的特定int声明我的Action,并从该类中调用此构造函数。 –