取多线程步骤返回值
取多线程方法返回值
在类A中调用类B 的方法Method1,Method1是一个多线程的方法,
string str = "";
while(true)
{
switch (xxx)
{
case "A":
str = "xxxxxxxxxx";
break;
case "B" :
}
}
如何在类A中获取 Method1方法中的str值
------解决思路----------------------
楼主去学一下关于委托的知识,给你个简单例子
------解决思路----------------------
1.在类B里放个全局public变量,类A中访问
2.在类A里放个全局public数组,类B里线程直接写入数组
------解决思路----------------------
使用异步委托调用,如果你需要该方法返回的结果,则BeginInvoke的返回值很重要,BgeinInvoke将返回一个IAsyncResult,这可以和委托的EndInvoke配合使用,以在方法调用完毕后检索调用结果
在类A中调用类B 的方法Method1,Method1是一个多线程的方法,
string str = "";
while(true)
{
switch (xxx)
{
case "A":
str = "xxxxxxxxxx";
break;
case "B" :
}
}
如何在类A中获取 Method1方法中的str值
------解决思路----------------------
楼主去学一下关于委托的知识,给你个简单例子
class Program
{
static void Main(string[] args)
{
MainThreadClass mt = new MainThreadClass();
mt.Start();
}
}
public class MainThreadClass
{
string[] arrStr = new string[] { "Microsoft", "IBM", "Oracle" };
public void Start()
{
foreach (string str in arrStr)
{
SubTreadClass st = new SubTreadClass();
st.Completed += new EventHandler(st_Completed);
ThreadStart ts = new ThreadStart(st.Method);
Thread th = new Thread(ts);
th.Name = str;
th.Start();
}
}
void st_Completed(object sender, EventArgs e)
{
Console.WriteLine("Thread completed.");
}
}
public class SubTreadClass
{
private event EventHandler m_eventCompleted = null;
public event EventHandler Completed
{
add { m_eventCompleted += value; }
remove { m_eventCompleted -= value; }
}
public void Method()
{
Console.WriteLine(string.Format("Current thread:{0}:{1}", Thread.CurrentThread.Name,
"MyClass.Method() executed."));
if (m_eventCompleted != null)
{
m_eventCompleted(this, EventArgs.Empty);
}
}
}
------解决思路----------------------
1.在类B里放个全局public变量,类A中访问
2.在类A里放个全局public数组,类B里线程直接写入数组
------解决思路----------------------
使用异步委托调用,如果你需要该方法返回的结果,则BeginInvoke的返回值很重要,BgeinInvoke将返回一个IAsyncResult,这可以和委托的EndInvoke配合使用,以在方法调用完毕后检索调用结果