将变量传递给c#中带有system.object参数的方法

时间:2015-07-07 14:21:50

标签: c#

我的申请很简单。我使用一个每15秒执行一次方法的计时器。

我的应用程序当前设置为有一个回调计时器打开一个创建字符串的方法,然后调用我的逻辑方法。

我想要做的是在timer方法中创建我的字符串,然后将字符串直接传递给我的逻辑方法。是否可以将变量传递给其中包含system.object参数的方法?

//This is the piece of code in my timer method (methodA) which calls methodB

ThisTimer = new System.Threading.Timer(new TimerCallback(methodB));

        private void methodB(object sender)
        {
        string theString= "MyString";
        methodC(theString);
        }

 private void methodC(string theString)
        {
        }

我想做的是

//This code jumps directly from methodA to methodC
string theString= "MyString";
ThisTimer = new System.Threading.Timer(new TimerCallback(methodC(system.object,theString)));

     private void methodC(object sender, string theString)
            {
            }

2 个答案:

答案 0 :(得分:2)

在为计时器提供回调时,使用lambda来关闭要使用的变量:

_ci_cached_vars
string theString= "MyString";
ThisTimer = new System.Threading.Timer(sender => methodC(theString));

答案 1 :(得分:0)

您在Timer构造函数中传递TimerCallback所需的对象,如此

std::ifstream in(...);
std::string name;
in >> name;
MyInfo info;
if (name == "John")
   info.person = Person2Name;

str对象将被传递给timercallback方法。