Skip to content

Instantly share code, notes, and snippets.

@dschenkelman
dschenkelman / CreateFile.cs
Created May 9, 2014 04:24
Asynchronous I/O in C#: I/O Completion Ports
const uint Flags = 128 | (uint)1 << 30;
var fileHandle = Interop.CreateFile("test.txt", (uint)1 << 31, 0, IntPtr.Zero, 3,
/*FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED */ Flags,
IntPtr.Zero);
Interop.CreateIoCompletionPort(
fileHandle,
completionPortHandle,
(uint)fileHandle.ToInt64(),
@dschenkelman
dschenkelman / APM.cs
Created May 9, 2014 04:10
Asynchronous I/O in C#: Why tasks (a.k.a. promises, futures)?
class ProgramWithAPM : IRunnable
{
private int pending;
private readonly object lockObject;
public ProgramWithAPM()
{
this.pending = 0;
this.lockObject = new object();
using Roslyn.Scripting.CSharp;
using System;
namespace RoslynTests
{
class Program
{
static void Main(string[] args)
{
var script = "using System; public class Test{ public void Do<T>() where T : IDisposable{ } }";
@dschenkelman
dschenkelman / Async.cs
Last active January 1, 2016 09:49
Async XBehave Steps
[Trait("AcceptanceTest", "RunningScriptsTests")]
[Trait("Requires", "Internet Connection")]
[Trait("Requires", "Administrator Privileges")]
public void RunningWebApiHostSampleEnablesWebAccessInLocalhostXBehave(string originalWorkingDirectory, Task<int> scriptTask)
{
const string MethodName = "RunningWebApiHostSampleEnablesWebAccessInLocalhostXBehave";
"Given an existing Web API host sample (similar to https://github.com/scriptcs/scriptcs-samples/tree/master/webapihost)"
._(() =>
{
@dschenkelman
dschenkelman / InitialTest.cs
Last active January 1, 2016 09:19
IntegrationTests
public class NugetPackageInstallationTests : IDisposable
{
private readonly string _originalWorkingDirectory;
private readonly string _filesDirectory;
private string _localDirectory;
public NugetPackageInstallationTests()
{
_originalWorkingDirectory = Environment.CurrentDirectory;
_filesDirectory = Path.Combine(AcceptanceTestHelpers.GetExecutingAssemblyDirectory(), "Files");