2016-09-02 6 views
0

Je cours un processus de décryptage sur des millions de fichiers et j'utilise GnuPG pour cela.Un événement de temporisation s'est produit lors de l'exécution de GnuPG en utilisant C#

Après le travail en cours d'exécution pour quelques minutes, il se referme brusquement avec l'erreur suivante:

ERROR: Starksoft.Aspen.GnuPG.GpgException: Error. Action: Decrypt. Command args: --passphrase-fd 0 --no-verbose --batch --trust-model always --decrypt ---> Starksoft.Aspen.GnuPG.GpgException: A time out event occurred while executing the GPG program. 
    at Starksoft.Aspen.GnuPG.Gpg.ExecuteGpg(ActionTypes action, Stream inputStream, Stream outputStream) 
    --- End of inner exception stack trace --- 
    at Starksoft.Aspen.GnuPG.Gpg.ExecuteGpg(ActionTypes action, Stream inputStream, Stream outputStream) 
    at Starksoft.Aspen.GnuPG.Gpg.Decrypt(Stream inputStream, Stream outputStream) 

J'ai écrit un traitement par lots et a essayé de le programmer, qui échoue aussi bien après quelques minutes. Je ne vois pas un fichier de configuration dans le dossier GnuPG si j'ai besoin de modifier les paramètres de délai d'expiration.

Répondre

0

GnuPG ne temporise pas. Le délai d'expiration est déclenché par l'interface GnuPG C# Starksoft.Aspen que vous utilisez. En regardant le code, il semble que le default timeout is 10 seconds et le délai d'expiration peut être configured through setting the TimeOut property. Je ne suis pas habitué à C# et ce cadre, mais il semble se résumer à quelque chose comme

gpg.TimeOut = 120000; // Set timeout to 120 seconds 

La lecture de la documentation MSDN sur Process.WaitForExit(Int32), il semble qu'une valeur de délai d'attente de Int32.MaxValue désactive le délai d'attente entièrement:

gpg.TimeOut = Int32.MaxValue; // Disable timeout