首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

线程调用有关问题

2012-06-21 
线程调用问题?VB.NET codeClass ASub proc()End SubEnd ClassClass BPrivate Sub xxxx(ByRef _className A

线程调用问题?

VB.NET code
Class A    Sub proc()    End SubEnd ClassClass B    Private Sub xxxx(ByRef _className As Object, ByVal _procName As String)        Dim t As New Thread(AddressOf _className.GetType.GetMethod(_procName))        '错误    “AddressOf”操作数必须是某个方法的名称(不带圆括号)。    End SubEnd Class


简而言之,就是我想在Class B中创建一个线程,去执行Class A中的proc方法。

但是上面的代码不行,怎么办?

[解决办法]
既然你已经传过来类的实例了,就直接_className.xxx就行了,方法必须是public的,如果通过反射可以这样

C# code
    public class MyClass    {        public void ShowNum()        {            for(int i=0;i<100;i++)            {                Console.WriteLine(i.ToString());            }        }    }        private void FOO()        {            MethodInfo method = typeof(MyClass).GetMethod("ShowNum");            if (method != null)            {                method.Invoke(new MyClass(), null);            }        }        private void button10_Click(object sender, EventArgs e)        {            MethodInfo method = typeof(MyClass).GetMethod("ShowNum");            Thread thread = new Thread(new ThreadStart(FOO));            thread.Start();        }
[解决办法]
探讨

既然你已经传过来类的实例了,就直接_className.xxx就行了,方法必须是public的,如果通过反射可以这样

C# code

public class MyClass
{
public void ShowNum()
{
for(int i=0;i<100;i++)
{
……

热点排行