Exemplo n.º 1
0
 public void Dispose()
 {
     Log("Dispose before lock");
     lock (locker)
     {
         Log("Dispose in lock");
         var t = new ThreadInfo();
         if (t.Id != thread.Id)
         {
             Log("Thread mismatch d:{0} != c:{1}", t, thread);
         }
         //AssertTools.True(t.Id == thread.Id, "Thread mismatch d:{0} != c:{1}", t, thread);
         if (!disposed)
         {
             Log("Disposing...");
             ExceptionTools.Try(() => Dispose(disposed), HandleException);
             Log("Dispose OK");
             Counter.Minus(this);
             disposed = true;
             var found = undisposed.Remove(this);
             AssertTools.True(found, "Disposable not found in undisposed");
             Log("Disposed");
         }
     }
 }
Exemplo n.º 2
0
        public static string MakeCli(string[] args, int offset)
        {
            var sb = new StringBuilder();

            for (var i = 0; i < args.Length - offset; i++)
            {
                //reject arguments with double quotes
                //double quote arguments with spaces
                var arg = args[i + offset];
                if (sb.Length > 0)
                {
                    sb.Append(" ");
                }
                AssertTools.True(!arg.Contains("\""), "Invalid arg {0} {1}", i, arg);
                if (arg.Contains(" "))
                {
                    sb.Append("\"");
                }
                sb.Append(arg);
                if (arg.Contains(" "))
                {
                    sb.Append("\"");
                }
            }
            return(sb.ToString());
        }