diff --git a/csharp/FileManager/Program.cs b/csharp/FileManager/Program.cs
index 5b620c94..aad4e681 100644
--- a/csharp/FileManager/Program.cs
+++ b/csharp/FileManager/Program.cs
@@ -22,14 +22,13 @@ internal class Program
///
///
///
- public static List> Handlers = new()
+ public static readonly List> Handlers = new()
{
new CreateTrigger(),
new DeleteTrigger(),
new HelpTrigger(),
new LinksPrinterTrigger(),
new ShowTrigger(),
- new HelpTrigger(),
new CreateFileSetTrigger(),
new GetFilesByFileSetNameTrigger()
};
@@ -37,18 +36,31 @@ private static async Task Main(string[] args)
{
using ConsoleCancellation cancellation = new();
var dbContext = new FileStorage(ConsoleHelpers.GetOrReadArgument(0, "Database file name", args));
- new HelpTrigger().Action(new Context { FileStorage = dbContext, Args = args });
+ await new HelpTrigger().Action(new Context { FileStorage = dbContext, Args = args });
try
{
while (!cancellation.Token.IsCancellationRequested)
{
var input = Console.ReadLine();
- var Context = new Context { FileStorage = dbContext, Args = input.Split() };
+ if (string.IsNullOrWhiteSpace(input))
+ {
+ continue;
+ }
+
+ var context = new Context { FileStorage = dbContext, Args = input.Split() };
foreach (var handler in Handlers)
{
- if (await handler.Condition(Context))
+ try
+ {
+ if (await handler.Condition(context))
+ {
+ await handler.Action(context);
+ break;
+ }
+ }
+ catch (Exception ex)
{
- handler.Action(Context);
+ Console.WriteLine($"Error processing handler {handler.GetType().Name}: {ex.Message}");
}
}
}