2015-10-06 100 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,並從該類中調用此構造函數。 –