Beispiel #1
0
        static public AttemptResult Attempt(AttemptProcess process, long milliseconds)
        {
            if (milliseconds > 0)
            {
                Timer timer = new Timer(milliseconds).StartAndGet();

                do
                {
                    AttemptResult result = process();
                    if (result.IsComplete())
                    {
                        return(result);
                    }

                    if (timer.GetTimeLeftInMilliseconds() > 50)
                    {
                        Thread.Sleep(1);
                    }
                }while (timer.IsTimeUnder());

                return(AttemptResult.Tried);
            }

            return(process());
        }
Beispiel #2
0
 static public AttemptResult AttemptFailOnException(AttemptProcess process, long milliseconds)
 {
     return(Attempt(delegate() {
         try
         {
             return process();
         }
         catch (Exception)
         {
             return AttemptResult.Failed;
         }
     }, milliseconds));
 }
Beispiel #3
0
        static public AttemptResult Write(this StreamSystem item, string path, AttemptProcess <Stream> process, long milliseconds = StreamSystem.DEFAULT_WAIT)
        {
            Stream        stream;
            AttemptResult result = item.OpenStreamForWriting(path, out stream, milliseconds);

            using (stream)
            {
                if (result.IsDesired())
                {
                    return(process(stream));
                }
            }

            return(result);
        }
Beispiel #4
0
 static public AttemptResult Write(this StreamSystemStream item, AttemptProcess <Stream> process, long milliseconds = StreamSystem.DEFAULT_WAIT)
 {
     return(item.GetStreamSystem().Write(item.GetPath(), process, milliseconds));
 }