【发布时间】:2014-03-06 08:29:24
【问题描述】:
我有一个名为的全局变量:
string tweet;
我运行了几个后台工作程序,除了等待tweet 变量的值变化之外什么都不做。然后运行一个名为:ProcessTweet( object sender, MyCustomEventArgs args )
我的问题是处理来自所有这些后台工作人员的属性更改事件的最佳方法是什么,然后根据推文值和传递给ProcessTweet 函数的另一个参数处理结果。
我试图查看INotifyPropertyChanged,但我不确定如何处理来自每个后台工作人员的OnValueChange 事件。它会运行一次相同的ProcessTweet 函数,还是每个后台工作人员都会运行该函数的一个实例?
编辑:
private ITweet _LastTweet;
public ITweet LastTweet
{
get { return this._LastTweet; }
set
{
this._LastTweet = value;
}
}
仍然不确定如何最好地处理属性更改事件^
下面是剩下的代码
private void bgworker_DoWork(object sender, DoWorkEventArgs e)
{
MyCustomClass myCustomClass = e.Argument as MyCustomClass;
//here I want to listen on the LastTweet Value Change event and handle it
}
List<BackgroundWorker> listOfBGWorkers = new List<BackgroundWorker>();
private BackgroundWorker CreateBackgroundWorker()
{
BackgroundWorker bgworker = new BackgroundWorker();
//add the DoWork etc..
bgworker.DoWork += new System.ComponentModel.DoWorkEventHandler(bgworker_DoWork);
return bgworker;
}
private void buttonStart_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
//Create the background workers
var bgworker = CreateBackgroundWorker();
listOfBGWorkers.Add(bgworker);
//get the MYCustomClass value;
var myCustomClass = SomeFunction();
bgworker.RunWorkerAsync(myCustomClass);
}
}
【问题讨论】:
-
我们可以看一些代码吗?这对弄清楚你要做什么很有帮助。
-
@Baldrick 我添加了更多代码。感谢您的观看!
-
你想让你的 all 线程响应 any 设置的新推文吗?
-
是的,但是每个线程应该得到一个不同的 MyCustomTask 变量
-
这感觉可能是 X-Y 问题。你想达到什么目的?为什么需要多个线程同时处理同一个推文?
标签: c# .net events event-handling backgroundworker