This all works well, but I'm wondering if it might not be more straightforward to just pass the InputRunner to the FileMonitor and let them call LogError and/or LogMessage directly?