Skip to content

Instantly share code, notes, and snippets.

Avatar

Stephen Cleary StephenCleary

View GitHub Profile
@StephenCleary
StephenCleary / ObjectWithPool.cs
Created Sep 28, 2014
Singly-linked list object pool with the list members embedded in the contained object.
View ObjectWithPool.cs
public sealed class MyObject : IDisposable
{
/// <summary>
/// Used by the pool.
/// </summary>
private MyObject _next;
// TODO: Add other members here.
public static MyObject Create()
View Program.cs
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)
View Async
// 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 Aug 29, 2015
Wait/Result can expect OperationCanceledException as its AggregateException.InnerException, regardless of how the cancellation was done.
View UnitTests.cs
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 Feb 14, 2012
Coroutines in VS11
View Program.cs
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)
View AsyncLazy.cs
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 Mar 7, 2013
Task identifiers are not unique. On my machine, this program will run for 3 minutes and then produce the output.
View Output
Id collision!
task.Id == other.Id: True
task == other: False
View CustomerOrderDetailsViewModel.cs
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
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.
View Program.cs
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 Dec 24, 2015 — 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…
View gist:6794708
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)
You can’t perform that action at this time.