объекты не равны NULL и исключение все еще возникает - PullRequest
0 голосов
/ 15 мая 2011

Ответ: это было в другом коде, но я думал, что нет причин, по которым код не будет указывать на эту строку.

Может кто-нибудь предложить идею, как это возможно, что я получаю "Ссылка на объект не установлена ​​на экземпляр объекта" по этому вопросу в методе Invoke:

delegate void t(tabdescriptor tab);
internal void AddItem(tabdesciptor tab)
{
    if (InvokeRequired)
    {
        t inv = new t(AddItem);
        if (inv != null && tab!= null)
            Invoke(inv, tab);
    }
    else
    {
        ....
    }
}

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Я не совсем уверен, что реальная проблема, учитывая ваш пример, не может быть кодом, который выполняется, но, пожалуйста, попробуйте что-то вроде этого:

internal void AddItem(tabdesciptor tab)
{
    if (InvokeRequired)
    {
        Invoke(new Action<tabdescriptor>(AddItem), tab);
    }
    else
    {
        //...
    }
}

Также, пожалуйста, убедитесь, что это не то, что находится в else части, которая выходит из строя.

1 голос
/ 15 мая 2011

Если я правильно помню, это исключение может исходить из вызванного метода. Если вы поместите try / catch внутри остального метода AddItem и точку останова внутри catch, поймаете ли вы исключение?

internal void AddItem(tabdesciptor tab)
{
    if (InvokeRequired)
    {
        t inv = new t(AddItem);
        if (inv != null && tab!= null)
            Invoke(inv, tab);
    }
    else
    {
        try
        {
            ....
        }
        catch
        {
            // breakpoint here
        }
    }
}
0 голосов
/ 15 мая 2011

Неясно, является ли это ошибкой в ​​данном примере, или нет, но tab никогда не проверяется на null, но передается в качестве аргумента.

Либо, вероятно, null,или:

Кроме того, inv проверяется на null сразу после его создания (хорошо в C / C ++, но не нужно в C #, поскольку при сбое выдает OutOfMemoryException), но это делается перед проверкой o для null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...