C# ConcurrentBag上的NullReferenceException。使用线程添加
我最初使用的是一个C# ConcurrentBag上的NullReferenceException。使用线程添加,c#,multithreading,C#,Multithreading,我最初使用的是一个列表,但在看到该列表不“线程安全”后,我改为ConcurrentBag 以下是到目前为止我的代码。当它运行时,它不会添加到ConcurrentBag,我得到一个NullReferenceException-“对象引用未设置为对象的实例”。我不确定问题是什么,因为我没有太多线程经验 static ConcurrentBag<String> urls; // ... static void buildThreads() { for (int i = 0; i
列表
,但在看到该列表不“线程安全”后,我改为ConcurrentBag
以下是到目前为止我的代码。当它运行时,它不会添加到ConcurrentBag
,我得到一个NullReferenceException
-“对象引用未设置为对象的实例”。我不确定问题是什么,因为我没有太多线程经验
static ConcurrentBag<String> urls;
// ...
static void buildThreads()
{
for (int i = 0; i < threads; i++)
{
Thread thread = new Thread(buildTokens);
thread.Start();
}
}
static void buildTokens()
{
while (true)
{
if (numSockets < tokens)
{
getUrl();
numSockets++;
Console.WriteLine(numSockets + "/" + tokens);
}
}
}
static void getUrl()
{
urls.Add("test");
}
静态ConcurrentBag URL;
// ...
静态void buildThreads()
{
对于(int i=0;i
我将感谢任何帮助。谢谢。在访问此对象之前执行此实例化,它现在包含一个
null
引用:
static ConcurrentBag<string> urls = new ConcurrentBag<string>();
静态ConcurrentBag URL=新ConcurrentBag();
在访问此对象之前执行此实例化,它现在包含一个null
引用:
static ConcurrentBag<string> urls = new ConcurrentBag<string>();
静态ConcurrentBag URL=新ConcurrentBag();
问题:您的ConcurrentBag
变量url
为null
,因为您没有正确初始化它
解决方案:您需要使用new
关键字正确初始化ConcurrentBag
变量url
替换此项:
static ConcurrentBag<String> urls;
静态ConcurrentBag URL;
为此:
static ConcurrentBag<String> urls = new ConcurrentBag<String>();
静态ConcurrentBag URL=新ConcurrentBag();
问题:您的ConcurrentBag
变量url
为null
,因为您没有正确初始化它
解决方案:您需要使用new
关键字正确初始化ConcurrentBag
变量url
替换此项:
static ConcurrentBag<String> urls;
静态ConcurrentBag URL;
为此:
static ConcurrentBag<String> urls = new ConcurrentBag<String>();
静态ConcurrentBag URL=新ConcurrentBag();
您必须“新建”您的并发包(创建实例):
static ConcurrentBag url=new ConcurrentBag()
如果您使用Visual Studio构建和调试代码,您应该能够在添加到包的行上放置断点,并注意变量的值为“null”您必须“新建”并发包(创建实例):
static ConcurrentBag url=new ConcurrentBag()
如果您使用Visual Studio构建和调试代码,您应该能够在添加到包的行上放置一个断点,并注意变量的值为“null”Try
static ConcurrentBag url=new ConcurrentBag()代码>可能重复的Try静态ConcurrentBag URL=new ConcurrentBag()代码>可能重复的Oops,我知道它会是这样的。谢谢哎呀,我就知道会是这样的。谢谢