Ваша программа упадет при запуске сборщика мусора и удалит экземпляр делегата.Тот, на который когда-то ссылалась ваша локальная переменная pfWatch.Но не более того, эта переменная давно исчезла, выгружается при возврате ReadImageFile ().Сборщик не может видеть ссылки, удерживаемые неуправляемым кодом.
Вы должны хранить ссылку самостоятельно и хранить ее в месте, которое может увидеть сборщик.По крайней мере, pfWatch должен быть полем в вашем классе, а не локальной переменной.Возможно статический, поэтому он никогда не будет собирать мусор.Из вашего фрагмента не ясно, когда нативный код перестает делать обратные вызовы.