Label从另一个线程更新a的最简单方法是什么?
我有一Form对thread1,并从我开始另一个线程(thread2).虽然thread2在处理一些文件,我想更新Label在Form用的当前状态thread2的工作.
我怎样才能做到这一点?
我正在使用第三方库来迭代一些非常大的平面文件,这可能需要很长时间.该库提供了一个枚举器,因此您可以生成每个结果并对其进行处理,同时枚举器然后提取平面文件中的下一个项目.
例如:
IEnumerable<object> GetItems()
{
var cursor = new Cursor;
try
{
cursor.Open();
while (!cursor.EOF)
{
yield return new //object;
cursor.MoveNext();
}
}
finally
{
if (cursor.IsOpen)
{
cursor.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的是拥有两个相同Enumerable的消费者,所以我不必两次提取信息,因此每个消费者仍然可以处理每个项目,因为它到达时不必等待所有时间到达一旦.
IEnumerable<object> items = GetItems();
new Thread(SaveToDateBase(items)).Start();
new Thread(SaveSomewhereElse(items)).Start();
Run Code Online (Sandbox Code Playgroud)
我想我想要实现的是类似的东西
"如果消费者要求的项目已被提取,则产生它,否则接下来移动并等待"但我意识到两个线程之间可能存在MoveNext()冲突.
如果没有任何关于如何实现的想法,这样的事情是否已经存在?
谢谢