加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#如何识别创建当前方法所在线程的方法?

发布时间:2020-12-15 23:37:03 所属栏目:百科 来源:网络整理
导读:我想找出创建当前方法运行的Thread的方法. 我会使用新的StackFrame(int).GetMethod().Name,但是在运行它时我在一个新的Thread中,所以这个就出来了. 我的代码示例如下: private void doSomething(object sender,EventArgs e){ try { Thread thread = new Thr
我想找出创建当前方法运行的Thread的方法.

我会使用新的StackFrame(int).GetMethod().Name,但是在运行它时我在一个新的Thread中,所以这个就出来了.

我的代码示例如下:

private void doSomething(object sender,EventArgs e)
{
    try
    {
        Thread thread = new Thread(new ParameterizedThreadStart(GenerateThreadMethod));
        thread.Start(new Dictionary<String,Object>() {
            { "date",Convert.ToDateTime(monthCalendar.SelectionRange.Start)},{ "path",myList[myListBox.SelectedIndex][1] }
        });
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}


private void GenerateThreadMethod(Object obj)
{
    Dictionary<String,Object> data = (Dictionary<String,Object>)obj;

    DateTime date = (DateTime)data["date"];
    String path = (String)data["path"];

    //I want to find the name of doSomething() right here

    doMoreThings(date,path);
}

解决方法

没有内置的方法来做到这一点.但是,您可以将任意对象传递给您的ParametrizedThreadStart委托,该委托可以包含您要通信的任何信息,包括调用方法名称.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读