2017-09-14 61 views
0

我在,我現在想的線程添加到長期的任務同步模型編寫一個程序,我有幾個屬性,自動像某些信息的檢索:如果我嘗試顯然調用屬性

private int tabIdx { get { return tabs.SelectedIndex; } } 

private string tabName { get { return tabs.SelectedTab.Text; } } 

public TabControls TabControls { get { return (TabControls)tabs.TabPages[tabIdx].Controls[string.Format("tab_{0}_controls", tabIdx)]; } } 
internal TabControls getTabControls(string name) 
{ 
    int desiredIdx = tabs.TabPages.IndexOfKey(name); 
    return (TabControls)tabs.TabPages[desiredIdx].Controls[string.Format("tab_{0}_controls", desiredIdx)]; 
} 

public Core rCore { get { return rdbCores[tabIdx]; } } 

Task.Run(())內部訪問這些屬性,或者我會得到一個跨線程異常。

所以我的問題是:

是否有可能有類似的太方法來調用這些屬性:

private void invokeIfRequired(ISynchronizeInvoke obj, MethodInvoker action) 
{ 
    if (obj.InvokeRequired) { obj.Invoke(action, new object[0]); } 
    else { action(); } 
} 
+0

https://stackoverflow.com/a/45961869/17034 –

回答

0

一般情況下,我用下面從不同的任務調用屬性。我不能按照你的代碼,你想調用,所以你必須調整代碼給你的應用程序需要:

button1.Invoke(new Action(()=>button1.Visible = true;))