我有以下方法,它存在于Windows服务引用的程序集中。该服务使用FileSystemWatcher等待删除文件。当一个新文件到达时,会应用一些逻辑(如果有帮助的话,那么逻辑是检查一个文件是否已存在于Google Drive中,其名称与刚删除的文件同名。如果是,则现有文件为Trashed并且新删除的文件最终将在转换为Google格式后取而代之。最后,服务使用我编写的包装器连接到Drive API(此包装器在下面的方法中命名为'service')。
问题是,当我从Console应用程序使用同一个程序集时,它可以正常工作。当服务运行时,它会进入//调试注释下的两个日志记录语句,然后挂起。
我的问题:如何弄清楚为什么这段代码会在服务中而不是在控制台应用中挂起?
private async Task<bool> RunConverter( JobLogging logging ) {
try {
logging.Log( "Converting file", JobLogging.Verbosity.Information );
var service = new Service( _clientID, _clientSecret );
// debugging
logging.Log( "ClientID: " + _clientID, JobLogging.Verbosity.All );
logging.Log( "ClientSecret: " + _clientSecret, JobLogging.Verbosity.All );
await service.Connect();
logging.Log( "Service connected", JobLogging.Verbosity.All );
// convert and make files public
var fileCount = await service.ConvertFiles( logging );
if ( fileCount > 0 ) ClearPPTX( logging );
return true;
}
catch ( Exception ex ) {
logging.Log( "Exception during File Conversion: " + ex.Message, JobLogging.Verbosity.Critical, true );
return false;
}
}