Skip to content

Instantly share code, notes, and snippets.

View programmation's full-sized avatar

David Dancy programmation

View GitHub Profile
// http://blog.stephencleary.com/2015/04/a-tour-of-task-part-10-promise-tasks.html
public Task<string> GetValueAsync(int key)
{
string result;
if (cache.TryGetValue(key, out result))
return Task.FromResult(result);
return DoGetValueAsync(key);
}
@programmation
programmation / tpl_job_processor.cs
Created May 4, 2015 04:17
TPL-based job processor
// http://stackoverflow.com/a/14933245
class JobProcessor<TInput, TOutput> : IDisposable
{
private readonly Func<TInput, TOutput> m_transform;
// or a custom type instead of Tuple
private readonly
BlockingCollection<Tuple<TInput, TaskCompletionSource<TOutput>>>
m_queue =
@programmation
programmation / tabbed_icon_renderer.cs
Created May 4, 2015 04:21
Xamarin Forms Android Tab Bar with Icons
// https://forums.xamarin.com/discussion/comment/119662/#Comment_119662
public class IconTabbedRenderer : TabbedRenderer
{
protected override void DispatchDraw(
global::Android.Graphics.Canvas canvas)
{
base.DispatchDraw(canvas);
SetTabIcons();
@programmation
programmation / unmanaged_resource_holder.cs
Created May 4, 2015 04:23
Unmanaged resource holder template
// http://blog.adamkemp.com/2014/10/c-finalizers-and-idisposable.html
public class UnmanagedResourceHolder : IDisposable
{
private bool _disposed;
private OtherDisposableObject _otherDisposable;
public UnmanagedResourceHolder()
{
AcquireUnmanagedResource();
@programmation
programmation / optional_interface.cs
Created May 4, 2015 04:26
Protocol pattern in C#
// http://www.knowing.net/index.php/2014/07/10/
interface IFoo
{
//Methods defined here, as always, must be implemented
void Necessary ();
}
static class IFoo_Extensions
{
@programmation
programmation / gist:44edf45980b10276b14f
Created May 4, 2015 04:29
Xamarin Forms DataTemplateSelector
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace Test
{
public class DataTemplateSelectorExtension : IMarkupExtension
{
public Page Page { get; set; }
@programmation
programmation / pcl_nugets.txt
Last active November 6, 2015 00:16
PCL NuGet packages
// List of interesting NuGet PCLs
Conditions
ExifLib
SharpSerializer
PCLStorage
BouncyCastlePCL (encryption)
Sockets
MathNet.Numerics
Zeroconf (Bonjour)
@programmation
programmation / async_noop.cs
Last active August 29, 2015 14:20
Async no-op
// http://blog.stephencleary.com/2015/04/a-tour-of-task-part-10-promise-tasks.html
interface IPlugin
{
// Permit each plugin to initialize asynchronously.
Task InitializeAsync();
}
class MyPlugin : IPlugin
{
@programmation
programmation / async_factory.cs
Created May 4, 2015 07:04
Async factory method
// http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
public sealed class MyClass
{
private MyData asyncData;
private MyClass() { ... }
private async Task<MyClass> InitializeAsync()
{
asyncData = await GetDataAsync();
// https://msdn.microsoft.com/en-us/library/hh228604(v=vs.110).aspx
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;