本文整理汇总了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;
}
示例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);
}
}
示例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;
}
示例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;
}
示例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
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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;
}
示例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);
}
示例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;
}
示例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;
}