Skip to content

Instantly share code, notes, and snippets.

Steven Swenson ctigeek

Block or report user

Report or block ctigeek

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View StringBuilderStream.cs
using System;
using System.IO;
using System.Text;
namespace StringBuilderStream
{
public class StringBuilderStream : Stream
{
public StringBuilder stringBuilder { get; private set; }
public Encoding Encoding { get; private set; }
View AesExample.cs
static void Main(string[] args)
{
try
{
const int AesBlockSize = 128;
const CipherMode AesMode = CipherMode.CBC;
const int AesKeySize = 256;
byte[] IV = new byte[] {148, 22, 160, 30, 29, 229, 95, 124, 57, 3, 236, 225, 83, 164, 109, 89};
byte[] key = new byte[] {151, 171, 230, 106, 79, 228, 203, 65, 11, 229, 238, 157, 170, 26, 6, 75, 205, 122, 87, 11, 134, 161, 159, 17, 93, 140, 66, 222, 216, 158, 23, 73 };
@ctigeek
ctigeek / ParallelTaskRunnerExtension.cs
Created Jul 1, 2014
ParallelTaskRunnerExtension - Running tasks in parallel, but limiting the concurrency.
View ParallelTaskRunnerExtension.cs
public static class ParallelTaskRunnerExtension
{
public static void RunTasks(this IEnumerable<Task> tasks, int maxConcurrency, Action<Task> taskComplete = null)
{
if (maxConcurrency <= 0) throw new ArgumentException("maxConcurrency must be more than 0.");
int taskCount = 0;
int nextIndex = 0;
var currentTasks = new Task[maxConcurrency];
foreach (var task in tasks)
@ctigeek
ctigeek / ObservableTaskRunnerExtension.cs
Last active Jan 5, 2017
Run tasks in parallel returned from an IObservable.
View ObservableTaskRunnerExtension.cs
internal class TObservable<T> : IObservable<T>, IDisposable
{
private readonly IObservable<Task<T>> taskObservable;
private IDisposable taskObservableSubscriber;
private IObserver<T> observer;
private readonly int maxConcurrency;
private Task<T>[] currentTasks;
private int taskCount = 0;
private int nextIndex = 0;
View SandboxForRx.cs
private static void GetValueIObservable2()
{
var repo = new AccountRepository();
var accounts = repo.GetAccountWithSubs("123123123");
//create a cold observable from IEnumerable...
var accountObservable = accounts.ToObservable();
//you can filter an IObservable just like an IEnumerable...
//.Where(a => a.AccountNumber.ToString().StartsWith("2"));
@ctigeek
ctigeek / RunSynchronouslyInThreadPool
Last active Aug 29, 2015
Run an Async Task Synchronously in the thread pool. This will not copy any thread context.
View RunSynchronouslyInThreadPool
private void button2_Click(object sender, EventArgs e)
{
try
{
//both methods do basically the same thing.
//I recommend the first since it's much simpler.
var body = RunSynchronouslyInAnotherTask(GetBody); // method 1
//var body = RunSynchronouslyInThreadPool(GetBody); // method 2
this.textBox1.Text = body;
@ctigeek
ctigeek / BasicAuthRequest.ps1
Last active Feb 29, 2016
Auth and other headers for making REST Request in powershell...
View BasicAuthRequest.ps1
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$dict = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$dict.Add("Accept", "application/json")
$response = Invoke-RestMethod -Uri $Url -Method Get -ContentType "application/json" -Headers $dict
$response
View IAsyncObservable.cs
// This works best for cold observables where you want to run Async methods after you subscribe.
// I may incorporate this into my QueryRunner....Not sure.
using System;
using System.Threading.Tasks;
namespace AsyncObservable
{
public interface IAsyncObserver<in T>
{
@ctigeek
ctigeek / EnumerableRepository.cs
Created Oct 23, 2014
Return IEnumerable from a database query....
View EnumerableRepository.cs
//Note: this was pretty much an acedemic exercise... I don't recommend using this pattern. IObservable would be much better suited.
class SomeRepository : IDisposable
{
private const string sql = "select * from sometable;";
private const string connString = @"Data Source=LOCALHOST\SQLEXPRESS;Initial Catalog=sandbox;Integrated Security=SSPI;";
public void Dispose()
{
if (reader != null) reader.Dispose();
if (connection != null) connection.Dispose();
@ctigeek
ctigeek / WebResponseException.cs
Created Oct 24, 2014
An exception that will encapsulate the details of a web call without embedding the specific response object. Using with RestClient.
View WebResponseException.cs
//boy am I looking forward to read-only classes in c# ver6.
public class WebResponseException : Exception
{
public readonly HttpStatusCode StatusCode;
public readonly string RequestUrl;
public readonly string RequestMethod;
public readonly Dictionary<string, string> RequestHeaders;
public readonly Dictionary<string, string> ResponseHeaders;
public readonly string ResponseBody;
You can’t perform that action at this time.