Skip to content

Instantly share code, notes, and snippets.

View StephenCleary's full-sized avatar

Stephen Cleary StephenCleary

View GitHub Profile
@StephenCleary
StephenCleary / ObjectWithPool.cs
Created September 28, 2014 15:58
Singly-linked list object pool with the list members embedded in the contained object.
public sealed class MyObject : IDisposable
{
/// <summary>
/// Used by the pool.
/// </summary>
private MyObject _next;
// TODO: Add other members here.
public static MyObject Create()
static void Main(string[] args)
{
int threadId = Task.Run(() =>
{
CallContext.LogicalSetData("k", 0);
Console.WriteLine("Write logical data on thread " + Thread.CurrentThread.ManagedThreadId);
return Thread.CurrentThread.ManagedThreadId;
}).Result;
while (true)
// I'm starting 10 calls at every 50 msec. Each call has a random execution time between 1-19 seconds.
// Many times the last answer comes from the 9th call instead of the 10th.
// I'm not sure I'm testing it properly.
void Main()
{
var rand = new Random();
Enumerable.Range(1,10)
@StephenCleary
StephenCleary / UnitTests.cs
Last active August 29, 2015 14:16
Wait/Result can expect OperationCanceledException as its AggregateException.InnerException, regardless of how the cancellation was done.
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class WaitCanTreatInnerExceptionAsOperationCanceledException
{
[TestMethod]
public void CancellationTokenPassedToStartNew_CanTreatAsOperationCanceledException()
@StephenCleary
StephenCleary / Program.cs
Created February 14, 2012 14:34
Coroutines in VS11
using System;
using System.Linq;
using System.Threading.Tasks;
// Target: .NET 4.5 Client (or Full)
// Add a reference to System.Threading.Tasks.Dataflow
class Program
{
static void Main(string[] args)
@StephenCleary
StephenCleary / AsyncLazy.cs
Created September 23, 2012 22:15
AsyncLazy
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
/// <summary>
/// Provides support for asynchronous lazy initialization. This type is fully threadsafe.
/// </summary>
/// <typeparam name="T">The type of object that is being asynchronously initialized.</typeparam>
public sealed class AsyncLazy<T>
{
@StephenCleary
StephenCleary / Output
Created March 7, 2013 15:07
Task identifiers are not unique. On my machine, this program will run for 3 minutes and then produce the output.
Id collision!
task.Id == other.Id: True
task == other: False
internal class AwaitableMessages
{
public static Task<T> NextMessageAsync<T>()
{
var tcs = new TaskCompletionSource<T>();
Messenger.Default.Register<T>(null, item => tcs.TrySetResult(item));
return tcs.Task;
}
}
@StephenCleary
StephenCleary / Program.cs
Created May 3, 2013 00:06
To search for asynchronous APIs, create a console app with this code. Reference all dlls you want to search, and then run the app in the debugger.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
namespace DisplayAsyncAPIs
{
class Program
@StephenCleary
StephenCleary / gist:6794708
Last active December 24, 2015 11:59 — forked from anonymous/gist:6782497
500 Internal Server Error for the request "https://www.healthcare.gov/ee-rest/ffe/en_US/MyAccountEIDMUnsecuredIntegration/fetchAllSecurityQuestions/ffm" which is silently ignored by the JavaScript and results in no security questions in the dropdowns. Site has been down 34.5 hours and counting... The error message has been updated today with pre…
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Could not send Message.
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:110)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:323)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:123)
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207)
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:213)
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:154)
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:126)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185)
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:113)