Skip to content

About

Fody add-in that adds the ability to save the state of asynchronous tasks for WP and WinRT platforms.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Repository files navigation

MugenMvvmToolkit


This is an add-in for Fody

Adds support for save the state of asynchronous tasks for WP and WinRT platforms. Updates all IAsyncStateMachine in the code so that they passed itself to the IAsyncStateMachineAware interface.

Your Code

[CompilerGenerated]
[StructLayout(LayoutKind.Auto)]
private struct <TestMethod>d__0 : IAsyncStateMachine
{
	public int <>1__state;
	public AsyncVoidMethodBuilder <>t__builder;
	private object <>u__$awaiter1;
	private object <>t__stack;
	void IAsyncStateMachine.MoveNext()
	{
		try
		{
			int num = this.<>1__state;
			IAsyncOperationAwaiter<bool> asyncOperationAwaiter;
			if (num != 0)
			{
				asyncOperationAwaiter = Program.Get().GetAwaiter<bool>();
				if (!asyncOperationAwaiter.IsCompleted)
				{
					this.<>1__state = 0;
					this.<>u__$awaiter1 = asyncOperationAwaiter;
					this.<>t__builder.AwaitOnCompleted<IAsyncOperationAwaiter<bool>, Program.<TestMethod>d__0>(ref asyncOperationAwaiter, ref this);
					return;
				}
			}
			else
			{
				asyncOperationAwaiter = (IAsyncOperationAwaiter<bool>)this.<>u__$awaiter1;
				this.<>u__$awaiter1 = null;
				this.<>1__state = -1;
			}
			asyncOperationAwaiter.GetResult();
			asyncOperationAwaiter = null;
		}
		catch (Exception exception)
		{
			this.<>1__state = -2;
			this.<>t__builder.SetException(exception);
			return;
		}
		this.<>1__state = -2;
		this.<>t__builder.SetResult();
	}
	[DebuggerHidden]
	void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine param0)
	{
		this.<>t__builder.SetStateMachine(param0);
	}
}

What gets compiled

[CompilerGenerated]
[StructLayout(LayoutKind.Auto)]
private struct <TestMethod>d__0 : IAsyncStateMachine
{
	public int <>1__state;
	public AsyncVoidMethodBuilder <>t__builder;
	private object <>u__$awaiter1;
	private object <>t__stack;
	private IAsyncStateMachine $_self_;
	void IAsyncStateMachine.MoveNext()
	{
		try
		{
			int num = this.<>1__state;
			IAsyncOperationAwaiter<bool> asyncOperationAwaiter;
			if (num != 0)
			{
				asyncOperationAwaiter = Program.Get().GetAwaiter<bool>();
				if (!asyncOperationAwaiter.IsCompleted)
				{
					this.<>1__state = 0;
					this.<>u__$awaiter1 = asyncOperationAwaiter;
					IAsyncStateMachineAware asyncStateMachineAware = this.<>u__$awaiter1 as IAsyncStateMachineAware;
					if (asyncStateMachineAware != null && this.$_self_ != null)
					{
						asyncStateMachineAware.SetStateMachine(this.$_self_);
					}
					this.<>t__builder.AwaitOnCompleted<IAsyncOperationAwaiter<bool>, Program.<TestMethod>d__0>(ref asyncOperationAwaiter, ref this);
					return;
				}
			}
			else
			{
				asyncOperationAwaiter = (IAsyncOperationAwaiter<bool>)this.<>u__$awaiter1;
				this.<>u__$awaiter1 = null;
				this.<>1__state = -1;
			}
			asyncOperationAwaiter.GetResult();
			asyncOperationAwaiter = null;
		}
		catch (Exception exception)
		{
			this.<>1__state = -2;
			this.<>t__builder.SetException(exception);
			return;
		}
		this.<>1__state = -2;
		this.<>t__builder.SetResult();
	}
	[DebuggerHidden]
	void IAsyncStateMachine.SetStateMachine(IAsyncStateMachine param0)
	{
		this.<>t__builder.SetStateMachine(param0);
		this.$_self_ = param0;
		IAsyncStateMachineAware asyncStateMachineAware = this.<>u__$awaiter1 as IAsyncStateMachineAware;
		if (asyncStateMachineAware != null)
		{
			asyncStateMachineAware.SetStateMachine(param0);
		}
	}
}

About

Fody add-in that adds the ability to save the state of asynchronous tasks for WP and WinRT platforms.

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages