如何从一个类同时运行两次函数?C#
运行时类变量之间发生冲突如何从一个类同时运行两次函数?C#,c#,C#,运行时类变量之间发生冲突 private myClass[] arrayms = new myClass[5]; foreach (myClass ms in arrayms) { if (ms.ScheduleState) Task.Factory.StartNew(() => ms.Start()); } 我得到了一个文本摘要,类是对象。程序运行时没有错误,但只有冲突变量 我不理解“冲突变量”。但其余部分似乎与我在之前的评论中所描述的相符。i、 e.调用foreach时
private myClass[] arrayms = new myClass[5];
foreach (myClass ms in arrayms) {
if (ms.ScheduleState)
Task.Factory.StartNew(() => ms.Start());
}
我得到了一个文本摘要,类是对象。程序运行时没有错误,但只有冲突变量 我不理解“冲突变量”。但其余部分似乎与我在之前的评论中所描述的相符。i、 e.调用
foreach
时,数组为空。所以,也许这个:
for (int i=0; i < ms.Length; i++) {
arrayms[i] = new MyClass();
}
// ScheduleState must somehow get set, then:
foreach (myClass ms in arrayms) {
if (ms.ScheduleState)
Task.Factory.StartNew(() => ms.Start());
}
结束编辑如何从一个类中同时从一个函数运行多个?C# 运行时_StartTask()myClass变量和日志结果之间存在冲突
private myClass[] arrayms = new myClass[5];
public void _TasksClassCreator()
{
foreach (var ms in arrayms )
{
ms.ScheduleName = SName;
.
.
.
}
}
public void _StartTask()
{
foreach (myClass ms in arrayms)
{
if (ms.ScheduleState)
Task.Factory.StartNew(() => ms.Start());
}
}
public sealed class myClass
{
public void Start()
{
_TBTask();
}
private void _TBTask()
{
while(true)
{
...//Conflict here
// this function always running and reporting result...
//log here
}
}
private string _ScheduleName;
public string ScheduleName
{
get
{
return _ScheduleName;
}
set
{
_ScheduleName = value;
}
.
.
.
}
}
你的错误是什么?另外,您创建了一个包含5个“插槽”的数组,但在调用
foreach
之前,似乎没有在其中放入任何对象。所以,foreach
只是因为arrayms
是空的而失败了。我得到了一个文本摘要,类是对象。程序运行时没有错误,但只有冲突变量。我为我的语言道歉;)当我们从myclass类多次执行starttask函数时,我的类变量将受到干扰。Task.Factory.StartNew(…)
?它的名称StartNew
意味着创建并启动了一个新对象。但会传递启动现有对象的匿名方法。那么我们实际上是从两件事开始的吗?
private myClass[] arrayms = new myClass[5];
public void _TasksClassCreator()
{
foreach (var ms in arrayms )
{
ms.ScheduleName = SName;
.
.
.
}
}
public void _StartTask()
{
foreach (myClass ms in arrayms)
{
if (ms.ScheduleState)
Task.Factory.StartNew(() => ms.Start());
}
}
public sealed class myClass
{
public void Start()
{
_TBTask();
}
private void _TBTask()
{
while(true)
{
...//Conflict here
// this function always running and reporting result...
//log here
}
}
private string _ScheduleName;
public string ScheduleName
{
get
{
return _ScheduleName;
}
set
{
_ScheduleName = value;
}
.
.
.
}
}