DarkByte2015: как вариант, можно вообще отказаться от ServiceReference. Либо менять синхронно в двух файлах - либо вынести контракты в отдельную библиотеку.
Артем Иванцов: Я так понимаю, вы в цикле считываете по некоторому адресу значение. И даже, предположим, это считывание происходит без пауз (если там есть паузы - см. первое решение).
Тогда булев флаг для остановки потока - идеальное решение. Не вижу ничего неразумного в постоянной проверке флага - какая-то проверка стоять все равно должна, а проверка флага - самая дешевая из возможных.
habrdima: если вызывать addListener только один раз - то очищать ничего не надо. Поэтому я и говорю - используйте нормальный статический content script, прописанный в манифесте. Он будет выполняться всего один раз - и проблема уйдет.
Андрей: А что тут подробнее? Перед просмотром, после авторизации, генерируется уникальный id, по которому можно скачать PDF. После скачивания больше по этому id скачать ничего нельзя.
Это поможет от "тупого" скачивания PDF по ссылке (но не поможет от восстановления алгоритма генерации id).