Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发生System.ArgumentException异常_C#_Pocketpc - Fatal编程技术网

C# 发生System.ArgumentException异常

C# 发生System.ArgumentException异常,c#,pocketpc,C#,Pocketpc,我有一种奇怪的行为。代码如下: ... private Object lockobj = new Object(); private Dictionary<String, BasicTagBean> toVerifyTags = null; public void verifyTags(List<BasicTagBean> tags) { System.Diagnostics.Debug.WriteLine("Thread ID: " + Thread.Curr

我有一种奇怪的行为。代码如下:

...
private Object lockobj = new Object();
private Dictionary<String, BasicTagBean> toVerifyTags = null;

public void verifyTags(List<BasicTagBean> tags)
{
    System.Diagnostics.Debug.WriteLine("Thread ID: " + Thread.CurrentThread.ManagedThreadId);
    lock (lockobj)
    {
        foreach (BasicTagBean tag in tags)
        {
            if (!alreadyVerified.ContainsKey(tag.EPC))
            {
                toVerifyTags.Add(tag.EPC, tag);
            }
        }
    }
...
在这一行代码中:

toVerifyTags.Add(tag.EPC, tag);

异常是指错误地将一个已经存在的元素添加到集合中,但我检查了这一点。可能是线程问题,但应用程序输出总是显示相同的线程id。我使用的是c#pocketpc 3.5版。

异常似乎告诉您,您试图添加到
toVerifyTags
中的密钥已经存在。您没有检查密钥是否已存在于正确的字典中

public void verifyTags(List<BasicTagBean> tags)
{
    System.Diagnostics.Debug.WriteLine("Thread ID: " + Thread.CurrentThread.ManagedThreadId);
    lock (lockobj)
    {
        foreach (BasicTagBean tag in tags)
        {
            if (!toVerifyTags.ContainsKey(tag.EPC))
            {
                toVerifyTags.Add(tag.EPC, tag);
            }
        }
    }
public void验证标签(列表标签)
{
System.Diagnostics.Debug.WriteLine(“线程ID:+Thread.CurrentThread.ManagedThreadId”);
锁(lockobj)
{
foreach(标签中的BasicTagBean标签)
{
如果(!toVerifyTags.ContainsKey(tag.EPC))
{
toVerifyTags.Add(tag.EPC,tag);
}
}
}

什么是
toVerifyTags
以及它是在哪里创建的?在哪里创建的
alreadyVerified
呢?您可以在代码示例中添加
toVerifyTags
的声明吗?另外,异常似乎相当准确,您的字典中已经有了该键。您没有检查该键是否已经存在于
toVer中ifyTags
…您似乎有两个不同的字典:alreadyVerified和toVerifyTags。仅仅因为alreadyVerified不包含某个键,并不意味着VerfyTags也不包含它。很抱歉,这是一个小错误。我更新了问题。我的错。只有一个字典,抱歉。我更新了问题。
public void verifyTags(List<BasicTagBean> tags)
{
    System.Diagnostics.Debug.WriteLine("Thread ID: " + Thread.CurrentThread.ManagedThreadId);
    lock (lockobj)
    {
        foreach (BasicTagBean tag in tags)
        {
            if (!toVerifyTags.ContainsKey(tag.EPC))
            {
                toVerifyTags.Add(tag.EPC, tag);
            }
        }
    }