![](/img/trans.png)
[英]Child actions are not allowed to perform redirect actions. (Using PartialViews)
[英]2 threads in a class have to perform different actions. My code is not working
我有一张表格。 单击按钮时,它应重定向到一个dll,其中有2个类。
Classxyz:
有2个主题。
线程1:应该有将字符串插入数组的方法
线程2:应该有从数组中返回第一个元素的方法
Classarray:
该数组是一个类阵列。
我的问题:
我无法理解我的线程是否正在执行他们的任务。
xyz类:
public void ToDo(string str)
{
ThreadObject firstThreadObject = new ThreadObject();
firstThreadObject.str = str;
Thread firstThread = new Thread(DoWorkpeek);
firstThread.Start(firstThreadObject);
ThreadObject secondThreadObject = new ThreadObject();
secondThreadObject.str = str;
Thread secondThread = new Thread(DoWorkenque);
secondThread.Start(secondThreadObject);
firstThread.Abort();
secondThread.Abort();
}
public void DoWorkpeek(object parameter)
{
ThreadObject threadObject = parameter as ThreadObject;
str1 = objq.queuepeek(threadObject.str);
MessageBox.Show(str1);
}
public void DoWorkenque(object parameter)
{
ThreadObject threadObject = parameter as ThreadObject;
objq.enqueue(threadObject.str);
}
我的代码是否正确?
MessageBox.show(str1);
没有显示。
首先, Join()
线程,不要Abort()
它们。
其次,您可以使用ParameterizedThreadStart
对象来启动线程,如下所示:
Thread firstThread = new Thread(new ParameterizedThreadStart(DoWorkpeek));
firstThread.Start(str);
...
firstThread.Join();
secondThread.Join();
此外,确保两个线程都可以访问您的objq对象(例如是静态的)并在访问时将其锁定,如下所示:
ThreadObject threadObject = parameter as ThreadObject;
lock(objq)
str1 = objq.queuepeek(threadObject.str);
MessageBox.Show(str1);
此外,您可以使用System.Diagnostics.Debug.WriteLine(str1)
而不是使用MessageBox.Show(str1)
System.Diagnostics.Debug.WriteLine(str1)
并写入Debug输出窗口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.