线程阻塞问题
本文关键字:问题 线程 | 更新日期: 2023-09-27 18:09:47
我有一个问题,一个线程或BeginInvoke阻塞了我的数据操作的整个过程,我启动线程或调用像这样
private void StartRetweetMarch(string twStatusId)
{
foreach (var line in _emailBox.Lines)
{
//new Action<object>(Hashtags).BeginInvoke(new Email { twStatus = twStatusId, login = line.Split(':')[0], password = line.Split(':')[1] }, null, null);
new Thread(new ParameterizedThreadStart(Hashtags)).Start(new Email { twStatus = twStatusId, login = line.Split(':')[0], password = line.Split(':')[1] });
//_threads.Add(new Action<object>(Hashtags).BeginInvoke(new Email { login = line.Split(':')[0], password = line.Split(':')[1] }, null, null));
//Thread.Sleep(40000);w
// new Thread(new ParameterizedThreadStart(Hashtags)).Start(new Email { login = line.Split(':')[0], password = line.Split(':')[1] });
}
}
但是只有这个foreach调用的第一个调用,其他的是挂起的或者类似的,我不知道该怎么做
在Hashtags方法中,它看起来不像线程安全的。例如,_proxy变量,我不确定这种类型,但如果您只是使用List
//Outside of Method...
//Create lock Object
private static object _lock = new Object();
//Inside of Hashtags Method...
//exclusive lock. Inside of code block is thread safe.
lock (_lock) {
prox = _proxies[new Random().Next(0, _proxies.Count)];
_proxies.Remove(prox);
}