当前位置: 首页>>代码示例>>C#>>正文


C# Future.Fail方法代码示例

本文整理汇总了C#中Future.Fail方法的典型用法代码示例。如果您正苦于以下问题:C# Future.Fail方法的具体用法?C# Future.Fail怎么用?C# Future.Fail使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Future的用法示例。


在下文中一共展示了Future.Fail方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Read

 public Future<int> Read(byte[] buffer, int offset, int count)
 {
     var f = new Future<int>();
     if (!_Socket.Connected) {
         if (ThrowOnDisconnect)
             f.Fail(new SocketDisconnectedException());
         else
             f.Complete(0);
     } else {
         SocketError errorCode;
         if (_Socket.Available >= count) {
             try {
                 int bytesRead = _Socket.Receive(buffer, offset, count, SocketFlags.None, out errorCode);
                 if (ThrowOnDisconnect && (bytesRead == 0)) {
                     f.Fail(new SocketDisconnectedException());
                 } else {
                     f.Complete(bytesRead);
                 }
             } catch (Exception ex) {
                 f.Fail(ex);
             }
         } else {
             _Socket.BeginReceive(buffer, offset, count, SocketFlags.None, out errorCode, _ReadCallback, f);
         }
     }
     return f;
 }
开发者ID:pakoito,项目名称:Fracture,代码行数:27,代码来源:Sockets.cs

示例2: GettingResultThrowsExceptionIfFutureValueIsException

 public void GettingResultThrowsExceptionIfFutureValueIsException () {
     var f = new Future<object>();
     f.Fail(new Exception("test"));
     try {
         var _ = f.Result;
         Assert.Fail();
     } catch (FutureException e) {
         Assert.AreEqual("test", e.InnerException.Message);
     }
 }
开发者ID:mbahar94,项目名称:fracture,代码行数:10,代码来源:FutureTests.cs

示例3: AcceptIncomingConnection

 public static Future<TcpClient> AcceptIncomingConnection (this TcpListener listener) {
     var f = new Future<TcpClient>();
     listener.BeginAcceptTcpClient((ar) => {
         try {
             TcpClient result = listener.EndAcceptTcpClient(ar);
             f.Complete(result);
         } catch (FutureHandlerException) {
             throw;
         } catch (Exception ex) {
             f.Fail(ex);
         }
     }, null);
     return f;
 }
开发者ID:mbahar94,项目名称:fracture,代码行数:14,代码来源:Network.cs

示例4: AsyncSend

 public static Future<Packet> AsyncSend(
     this Session session, Packet packet
 )
 {
     var f = new Future<Packet>();
     session.BeginSend(packet, (_) => {
         try {
             f.Complete(session.EndSend(_));
         } catch (Exception ex) {
             f.Fail(ex);
         }
     });
     return f;
 }
开发者ID:kg,项目名称:shootbluesscripts,代码行数:14,代码来源:JabberExtensions.cs

示例5: AsyncRead

        public static Future<int> AsyncRead (this Stream stream, byte[] buffer, int offset, int count) {
#if XBOX
            return Future.RunInThread(() => stream.Read(buffer, offset, count));
#else
            var f = new Future<int>();
            try {
                stream.BeginRead(buffer, offset, count, (ar) => {
                    try {
                        int bytesRead;
                        lock (stream)
                            bytesRead = stream.EndRead(ar);
                        f.Complete(bytesRead);
                    } catch (FutureHandlerException) {
                        throw;
                    } catch (Exception ex) {
                        f.Fail(ex);
                    }
                }, stream);
            } catch (Exception ex) {
                f.Fail(ex);
            }
            return f;
#endif
        }
开发者ID:mbahar94,项目名称:fracture,代码行数:24,代码来源:IO.cs

示例6: ConnectTo

 public static Future<TcpClient> ConnectTo (string host, int port) {
     var f = new Future<TcpClient>();
     TcpClient client = new TcpClient();
     client.BeginConnect(host, port, (ar) => {
         try {
             client.EndConnect(ar);
             f.Complete(client);
         } catch (FutureHandlerException) {
             throw;
         } catch (Exception ex) {
             f.Fail(ex);
             client.Close();
         }
     }, null);
     return f;
 }
开发者ID:mbahar94,项目名称:fracture,代码行数:16,代码来源:Network.cs

示例7: AsyncExecuteReader

 public static Future<IDataReader> AsyncExecuteReader (this IDbCommand cmd) {
     var f = new Future<IDataReader>();
     ThreadPool.QueueUserWorkItem(
         (WaitCallback)(
             (state) => {
                 try {
                     IDataReader result;
                     result = cmd.ExecuteReader();
                     f.SetResult(result, null);
                 } catch (Exception e) {
                     f.Fail(e);
                 }
             }
         )
     );
     return f;
 }
开发者ID:mbahar94,项目名称:fracture,代码行数:17,代码来源:Misc.cs

示例8: AsyncExecuteScalar

 public static IFuture AsyncExecuteScalar (this IDbCommand cmd) {
     var f = new Future<object>();
     ThreadPool.QueueUserWorkItem(
         (WaitCallback)(
             (state) => {
                 try {
                     object result;
                     result = cmd.ExecuteScalar();
                     f.SetResult(result, null);
                 } catch (Exception e) {
                     f.Fail(e);
                 }
             }
         )
     );
     return f;
 }
开发者ID:mbahar94,项目名称:fracture,代码行数:17,代码来源:Misc.cs

示例9: AsyncLogin

 public static Future<Session> AsyncLogin(
     string username, string password, string resource, 
     bool enableNonSASLAuth, ConnectionOptions options
 )
 {
     var f = new Future<Session>();
     Session.BeginLogin(
         username, password, resource, enableNonSASLAuth, options,
         (_) => {
             try {
                 f.Complete(Session.EndLogin(_));
             } catch (Exception ex) {
                 f.Fail(ex);
             }
         }, null
     );
     return f;
 }
开发者ID:kg,项目名称:shootbluesscripts,代码行数:18,代码来源:JabberExtensions.cs

示例10: GetContextAsync

 public static Future<HttpListenerContext> GetContextAsync(this HttpListener listener)
 {
     var f = new Future<HttpListenerContext>();
     listener.BeginGetContext((ar) => {
         try {
             var result = listener.EndGetContext(ar);
             f.Complete(result);
         } catch (FutureHandlerException) {
             throw;
         } catch (Exception ex) {
             f.Fail(ex);
         }
     }, null);
     return f;
 }
开发者ID:pakoito,项目名称:Fracture,代码行数:15,代码来源:Web.cs

示例11: AsyncSend

 public static Future<int> AsyncSend(this UdpClient udpClient, byte[] datagram, int bytes, string hostname, int port)
 {
     var f = new Future<int>();
     try {
         udpClient.BeginSend(
             datagram, bytes, hostname, port,
             (ar) => {
                 try {
                     var bytesSent = udpClient.EndSend(ar);
                     f.Complete(bytesSent);
                 } catch (FutureHandlerException) {
                     throw;
                 } catch (Exception ex) {
                     f.Fail(ex);
                 }
             },
             null
         );
     } catch (Exception ex) {
         f.Fail(ex);
     }
     return f;
 }
开发者ID:sq,项目名称:Fracture,代码行数:23,代码来源:Network.cs

示例12: Read

        public Future<char> Read(bool advance = true)
        {
            var f = new Future<char>();

            SetPendingOperation(f);

            char result;
            if (!GetCurrentCharacter(out result)) {
                var decodeMoreChars = DecodeMoreData();
                decodeMoreChars.RegisterOnComplete((_) => {
                    if (IsDisposed) {
                        f.Dispose();
                        return;
                    }

                    var error = _.Error;
                    if (error != null) {
                        ClearPendingOperation(f);
                        f.Fail(error);
                    } else {
                        char ch;
                        if (GetCurrentCharacter(out ch)) {
                            if (advance)
                                ReadNextCharacter();
                            ClearPendingOperation(f);
                            f.Complete(ch);
                        } else {
                            ClearPendingOperation(f);
                            f.Complete(null);
                        }
                    }
                });
            } else {
                if (advance)
                    ReadNextCharacter();
                ClearPendingOperation(f);
                f.Complete(result);
            }

            return f;
        }
开发者ID:sq,项目名称:Fracture,代码行数:41,代码来源:IO.cs

示例13: FillingSendBufferCausesWriteToBlock

        public void FillingSendBufferCausesWriteToBlock()
        {
            byte[] buf = new byte[102400];

            StreamA.Write(buf, 0, buf.Length);

            var f = new Future<object>();

            ThreadPool.QueueUserWorkItem((_) => {
                try {
                    StreamA.Write(buf, 0, buf.Length);
                    f.Complete();
                } catch (Exception ex) {
                    f.Fail(ex);
                }
            }, null);

            Thread.Sleep(3000);

            Assert.IsFalse(f.Completed, "Expected a full send buffer to make write operation block");

            A.Close();
            B.Close();
            StreamA.Dispose();
            StreamB.Dispose();

            GC.Collect();

            Thread.Sleep(1000);

            Assert.IsTrue(f.Completed);
            Assert.IsTrue(f.Failed);
        }
开发者ID:sq,项目名称:Fracture,代码行数:33,代码来源:IOTests.cs

示例14: DecodeMoreData

        private Future<int> DecodeMoreData()
        {
            var f = new Future<int>();
            var readData = ReadMoreData();
            readData.RegisterOnComplete((_) => {
                if (IsDisposed) {
                    f.Dispose();
                    return;
                }

                var error = _.Error;
                if (error != null) {
                    f.Fail(error);
                    return;
                }

                int bytesRead = (int)(_.Result);

                try {
                    _DecodedCharacterOffset = 0;
                    _DecodedCharacterCount = 0;
                    _DecodedCharacterCount = _Decoder.GetChars(_InputBuffer, 0, bytesRead, _DecodedBuffer, 0);
                    f.Complete(_DecodedCharacterCount);
                } catch (FutureHandlerException) {
                    throw;
                } catch (Exception ex) {
                    f.Fail(ex);
                }
            });
            return f;
        }
开发者ID:pakoito,项目名称:Fracture,代码行数:31,代码来源:IO.cs

示例15: AsyncReceive

 public static Future<Network.UdpPacket> AsyncReceive(this UdpClient udpClient)
 {
     var f = new Future<Network.UdpPacket>();
     try {
         udpClient.BeginReceive((ar) => {
             IPEndPoint endpoint = default(IPEndPoint);
             try {
                 var bytes = udpClient.EndReceive(ar, ref endpoint);
                 f.Complete(new Network.UdpPacket(bytes, endpoint));
             } catch (FutureHandlerException) {
                 throw;
             } catch (Exception ex) {
                 f.Fail(ex);
             }
         }, null);
     } catch (Exception ex) {
         f.Fail(ex);
     }
     return f;
 }
开发者ID:sq,项目名称:Fracture,代码行数:20,代码来源:Network.cs


注:本文中的Future.Fail方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。