Commit ad9501d5 authored by Marc Gravell's avatar Marc Gravell

Support Net40

parent 137aa885
...@@ -9,12 +9,20 @@ ...@@ -9,12 +9,20 @@
<description>High performance Redis client, incorporating both synchronous and asynchronous usage; the notional successor to BookSleeve</description> <description>High performance Redis client, incorporating both synchronous and asynchronous usage; the notional successor to BookSleeve</description>
<tags>Async Redis NoSQL Client Distributed Cache PubSub Messaging</tags> <tags>Async Redis NoSQL Client Distributed Cache PubSub Messaging</tags>
<language>en-US</language> <language>en-US</language>
<dependencies></dependencies>
<projectUrl>https://github.com/StackExchange/StackExchange.Redis</projectUrl> <projectUrl>https://github.com/StackExchange/StackExchange.Redis</projectUrl>
<licenseUrl>https://raw.github.com/StackExchange/StackExchange.Redis/master/LICENSE</licenseUrl> <licenseUrl>https://raw.github.com/StackExchange/StackExchange.Redis/master/LICENSE</licenseUrl>
<copyright>Stack Exchange inc. 2014</copyright> <copyright>Stack Exchange inc. 2014</copyright>
<dependencies>
<group targetFramework="net40">
<dependency id="Microsoft.Bcl" version="1.1.8"/>
<dependency id="Microsoft.Bcl.Async" version="1.0.168"/>
<dependency id="Microsoft.Bcl.Build" version="1.0.14"/>
</group>
</dependencies>
</metadata> </metadata>
<files> <files>
<file src="StackExchange.Redis\bin\Release\StackExchange.Redis.*" target="lib" /> <file src="StackExchange.Redis\bin\Release\StackExchange.Redis*.*" target="lib\net45" />
<file src="StackExchange.Redis_Net40\bin\Release\StackExchange.Redis*.*" target="lib\net40" />
</files> </files>
</package> </package>
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013 # Visual Studio 2013
VisualStudioVersion = 12.0.30129.0 VisualStudioVersion = 12.0.30324.0
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StackExchange.Redis", "StackExchange.Redis\StackExchange.Redis.csproj", "{7CEC07F2-8C03-4C42-B048-738B215824C1}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StackExchange.Redis", "StackExchange.Redis\StackExchange.Redis.csproj", "{7CEC07F2-8C03-4C42-B048-738B215824C1}"
EndProject EndProject
...@@ -34,6 +34,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Redis Configs", "Redis Conf ...@@ -34,6 +34,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Redis Configs", "Redis Conf
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{709E0CE4-F0BA-4933-A4FD-4A8B6668A5D4}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{709E0CE4-F0BA-4933-A4FD-4A8B6668A5D4}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
build.msbuild = build.msbuild
monobuild.bash = monobuild.bash monobuild.bash = monobuild.bash
monobuild.cmd = monobuild.cmd monobuild.cmd = monobuild.cmd
netbuild.cmd = netbuild.cmd netbuild.cmd = netbuild.cmd
...@@ -48,6 +49,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicTest", "BasicTest\Basi ...@@ -48,6 +49,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BasicTest", "BasicTest\Basi
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MigratedBookSleeveTestSuite", "MigratedBookSleeveTestSuite\MigratedBookSleeveTestSuite.csproj", "{97B45B3A-34DB-43C3-A979-37F217390142}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MigratedBookSleeveTestSuite", "MigratedBookSleeveTestSuite\MigratedBookSleeveTestSuite.csproj", "{97B45B3A-34DB-43C3-A979-37F217390142}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StackExchange.Redis_Net40", "StackExchange.Redis_Net40\StackExchange.Redis_Net40.csproj", "{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
...@@ -104,6 +107,14 @@ Global ...@@ -104,6 +107,14 @@ Global
{97B45B3A-34DB-43C3-A979-37F217390142}.Release|Any CPU.Build.0 = Release|Any CPU {97B45B3A-34DB-43C3-A979-37F217390142}.Release|Any CPU.Build.0 = Release|Any CPU
{97B45B3A-34DB-43C3-A979-37F217390142}.Verbose|Any CPU.ActiveCfg = Release|Any CPU {97B45B3A-34DB-43C3-A979-37F217390142}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{97B45B3A-34DB-43C3-A979-37F217390142}.Verbose|Any CPU.Build.0 = Release|Any CPU {97B45B3A-34DB-43C3-A979-37F217390142}.Verbose|Any CPU.Build.0 = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Log Output|Any CPU.ActiveCfg = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Log Output|Any CPU.Build.0 = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Release|Any CPU.Build.0 = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{36CAC6B6-2B88-447F-AA35-D4DAA5E4F2C7}.Verbose|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<DocumentationFile>bin\Debug\StackExchange.Redis.xml</DocumentationFile> <DocumentationFile>bin\Debug\StackExchange.Redis.XML</DocumentationFile>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType> <DebugType>pdbonly</DebugType>
...@@ -59,7 +59,6 @@ ...@@ -59,7 +59,6 @@
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.IO.Compression" /> <Reference Include="System.IO.Compression" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
namespace StackExchange.Redis namespace StackExchange.Redis
{ {
sealed partial class CompletionManager sealed partial class CompletionManager
{ {
private static readonly WaitCallback processAsyncCompletionQueue = ProcessAsyncCompletionQueue, private static readonly WaitCallback processAsyncCompletionQueue = ProcessAsyncCompletionQueue,
anyOrderCompletionHandler = AnyOrderCompletionHandler; anyOrderCompletionHandler = AnyOrderCompletionHandler;
private readonly Queue<ICompletable> asyncCompletionQueue = new Queue<ICompletable>(); private readonly Queue<ICompletable> asyncCompletionQueue = new Queue<ICompletable>();
private readonly ConnectionMultiplexer multiplexer; private readonly ConnectionMultiplexer multiplexer;
private readonly string name; private readonly string name;
int activeAsyncWorkerThread = 0; int activeAsyncWorkerThread = 0;
long completedSync, completedAsync, failedAsync; long completedSync, completedAsync, failedAsync;
public CompletionManager(ConnectionMultiplexer multiplexer, string name) public CompletionManager(ConnectionMultiplexer multiplexer, string name)
{ {
this.multiplexer = multiplexer; this.multiplexer = multiplexer;
this.name = name; this.name = name;
} }
public void CompleteSyncOrAsync(ICompletable operation) public void CompleteSyncOrAsync(ICompletable operation)
{ {
if (operation == null) return; if (operation == null) return;
if (operation.TryComplete(false)) if (operation.TryComplete(false))
{ {
multiplexer.Trace("Completed synchronously: " + operation, name); multiplexer.Trace("Completed synchronously: " + operation, name);
Interlocked.Increment(ref completedSync); Interlocked.Increment(ref completedSync);
return; return;
} }
else else
{ {
if (multiplexer.PreserveAsyncOrder) if (multiplexer.PreserveAsyncOrder)
{ {
multiplexer.Trace("Queueing for asynchronous completion", name); multiplexer.Trace("Queueing for asynchronous completion", name);
bool startNewWorker; bool startNewWorker;
lock (asyncCompletionQueue) lock (asyncCompletionQueue)
{ {
asyncCompletionQueue.Enqueue(operation); asyncCompletionQueue.Enqueue(operation);
startNewWorker = asyncCompletionQueue.Count == 1; startNewWorker = asyncCompletionQueue.Count == 1;
} }
if (startNewWorker) if (startNewWorker)
{ {
multiplexer.Trace("Starting new async completion worker", name); multiplexer.Trace("Starting new async completion worker", name);
OnCompletedAsync(); OnCompletedAsync();
ThreadPool.QueueUserWorkItem(processAsyncCompletionQueue, this); ThreadPool.QueueUserWorkItem(processAsyncCompletionQueue, this);
} }
} else } else
{ {
multiplexer.Trace("Using thread-pool for asynchronous completion", name); multiplexer.Trace("Using thread-pool for asynchronous completion", name);
ThreadPool.QueueUserWorkItem(anyOrderCompletionHandler, operation); ThreadPool.QueueUserWorkItem(anyOrderCompletionHandler, operation);
Interlocked.Increment(ref completedAsync); // k, *technically* we haven't actually completed this yet, but: close enough Interlocked.Increment(ref completedAsync); // k, *technically* we haven't actually completed this yet, but: close enough
} }
} }
} }
internal void GetCounters(ConnectionCounters counters) internal void GetCounters(ConnectionCounters counters)
{ {
lock (asyncCompletionQueue) lock (asyncCompletionQueue)
{ {
counters.ResponsesAwaitingAsyncCompletion = asyncCompletionQueue.Count; counters.ResponsesAwaitingAsyncCompletion = asyncCompletionQueue.Count;
} }
counters.CompletedSynchronously = Interlocked.Read(ref completedSync); counters.CompletedSynchronously = Interlocked.Read(ref completedSync);
counters.CompletedAsynchronously = Interlocked.Read(ref completedAsync); counters.CompletedAsynchronously = Interlocked.Read(ref completedAsync);
counters.FailedAsynchronously = Interlocked.Read(ref failedAsync); counters.FailedAsynchronously = Interlocked.Read(ref failedAsync);
} }
internal int GetOutstandingCount() internal int GetOutstandingCount()
{ {
lock(asyncCompletionQueue) lock(asyncCompletionQueue)
{ {
return asyncCompletionQueue.Count; return asyncCompletionQueue.Count;
} }
} }
internal void GetStormLog(StringBuilder sb) internal void GetStormLog(StringBuilder sb)
{ {
lock(asyncCompletionQueue) lock(asyncCompletionQueue)
{ {
if (asyncCompletionQueue.Count == 0) return; if (asyncCompletionQueue.Count == 0) return;
sb.Append("Response awaiting completion: ").Append(asyncCompletionQueue.Count).AppendLine(); sb.Append("Response awaiting completion: ").Append(asyncCompletionQueue.Count).AppendLine();
int total = 0; int total = 0;
foreach(var item in asyncCompletionQueue) foreach(var item in asyncCompletionQueue)
{ {
if (++total >= 500) break; if (++total >= 500) break;
item.AppendStormLog(sb); item.AppendStormLog(sb);
sb.AppendLine(); sb.AppendLine();
} }
} }
} }
private static void AnyOrderCompletionHandler(object state) private static void AnyOrderCompletionHandler(object state)
{ {
try try
{ {
ConnectionMultiplexer.TraceWithoutContext("Completing async (any order): " + state); ConnectionMultiplexer.TraceWithoutContext("Completing async (any order): " + state);
((ICompletable)state).TryComplete(true); ((ICompletable)state).TryComplete(true);
} }
catch (Exception ex) catch (Exception ex)
{ {
ConnectionMultiplexer.TraceWithoutContext("Async completion error: " + ex.Message); ConnectionMultiplexer.TraceWithoutContext("Async completion error: " + ex.Message);
} }
} }
private static void ProcessAsyncCompletionQueue(object state) private static void ProcessAsyncCompletionQueue(object state)
{ {
((CompletionManager)state).ProcessAsyncCompletionQueueImpl(); ((CompletionManager)state).ProcessAsyncCompletionQueueImpl();
} }
partial void OnCompletedAsync(); partial void OnCompletedAsync();
private void ProcessAsyncCompletionQueueImpl() private void ProcessAsyncCompletionQueueImpl()
{ {
int currentThread = Environment.CurrentManagedThreadId; #if NET40
int currentThread = Thread.CurrentThread.ManagedThreadId;
#else
int currentThread = Environment.CurrentManagedThreadId;
#endif
try try
{ {
while (Interlocked.CompareExchange(ref activeAsyncWorkerThread, currentThread, 0) != 0) while (Interlocked.CompareExchange(ref activeAsyncWorkerThread, currentThread, 0) != 0)
...@@ -165,11 +170,11 @@ private void ProcessAsyncCompletionQueueImpl() ...@@ -165,11 +170,11 @@ private void ProcessAsyncCompletionQueueImpl()
total++; total++;
} while (true); } while (true);
multiplexer.Trace("Async completion worker processed " + total + " operations", name); multiplexer.Trace("Async completion worker processed " + total + " operations", name);
} }
finally finally
{ {
Interlocked.CompareExchange(ref activeAsyncWorkerThread, 0, currentThread); Interlocked.CompareExchange(ref activeAsyncWorkerThread, 0, currentThread);
} }
} }
} }
} }
...@@ -298,7 +298,11 @@ internal async Task ResolveEndPointsAsync(ConnectionMultiplexer multiplexer, Tex ...@@ -298,7 +298,11 @@ internal async Task ResolveEndPointsAsync(ConnectionMultiplexer multiplexer, Tex
else else
{ {
multiplexer.LogLocked(log, "Using DNS to resolve '{0}'...", dns.Host); multiplexer.LogLocked(log, "Using DNS to resolve '{0}'...", dns.Host);
#if NET40
var ips = Dns.GetHostAddresses(dns.Host);
#else
var ips = await Dns.GetHostAddressesAsync(dns.Host).ObserveErrors().ForAwait(); var ips = await Dns.GetHostAddressesAsync(dns.Host).ObserveErrors().ForAwait();
#endif
if (ips.Length == 1) if (ips.Length == 1)
{ {
ip = ips[0]; ip = ips[0];
......
...@@ -6,10 +6,14 @@ ...@@ -6,10 +6,14 @@
using System.IO.Compression; using System.IO.Compression;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Runtime.CompilerServices;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Runtime.CompilerServices;
#if NET40
using Microsoft.Runtime.CompilerServices;
#endif
namespace StackExchange.Redis namespace StackExchange.Redis
{ {
internal static partial class TaskExtensions internal static partial class TaskExtensions
...@@ -159,6 +163,7 @@ internal void OnErrorMessage(EndPoint endpoint, string message) ...@@ -159,6 +163,7 @@ internal void OnErrorMessage(EndPoint endpoint, string message)
} }
} }
#if !NET40
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2202:Do not dispose objects multiple times")]
static void Write<T>(ZipArchive zip, string name, Task task, Action<T, StreamWriter> callback) static void Write<T>(ZipArchive zip, string name, Task task, Action<T, StreamWriter> callback)
{ {
...@@ -265,7 +270,7 @@ public void ExportConfiguration(Stream destination, ExportOptions options = Expo ...@@ -265,7 +270,7 @@ public void ExportConfiguration(Stream destination, ExportOptions options = Expo
} }
} }
} }
#endif
internal void MakeMaster(ServerEndPoint server, ReplicationChangeOptions options, TextWriter log) internal void MakeMaster(ServerEndPoint server, ReplicationChangeOptions options, TextWriter log)
{ {
...@@ -539,8 +544,14 @@ private static async Task<bool> WaitAllIgnoreErrorsAsync(Task[] tasks, int timeo ...@@ -539,8 +544,14 @@ private static async Task<bool> WaitAllIgnoreErrorsAsync(Task[] tasks, int timeo
try try
{ {
// if none error, great // if none error, great
#if NET40
var allTasks = TaskEx.WhenAll(tasks).ObserveErrors();
var any = TaskEx.WhenAny(allTasks, TaskEx.Delay(timeoutMilliseconds)).ObserveErrors();
#else
var allTasks = Task.WhenAll(tasks).ObserveErrors(); var allTasks = Task.WhenAll(tasks).ObserveErrors();
var any = Task.WhenAny(allTasks, Task.Delay(timeoutMilliseconds)).ObserveErrors(); var any = Task.WhenAny(allTasks, Task.Delay(timeoutMilliseconds)).ObserveErrors();
#endif
return await any.ForAwait() == allTasks; return await any.ForAwait() == allTasks;
} }
catch catch
...@@ -557,7 +568,11 @@ private static async Task<bool> WaitAllIgnoreErrorsAsync(Task[] tasks, int timeo ...@@ -557,7 +568,11 @@ private static async Task<bool> WaitAllIgnoreErrorsAsync(Task[] tasks, int timeo
if (remaining <= 0) return false; if (remaining <= 0) return false;
try try
{ {
#if NET40
var any = TaskEx.WhenAny(task, TaskEx.Delay(remaining)).ObserveErrors();
#else
var any = Task.WhenAny(task, Task.Delay(remaining)).ObserveErrors(); var any = Task.WhenAny(task, Task.Delay(remaining)).ObserveErrors();
#endif
await any.ForAwait(); await any.ForAwait();
} }
catch catch
...@@ -1070,7 +1085,11 @@ internal async Task<bool> ReconfigureAsync(bool first, bool reconfigureAll, Text ...@@ -1070,7 +1085,11 @@ internal async Task<bool> ReconfigureAsync(bool first, bool reconfigureAll, Text
if (configuration.ResolveDns && configuration.HasDnsEndPoints()) if (configuration.ResolveDns && configuration.HasDnsEndPoints())
{ {
var dns = configuration.ResolveEndPointsAsync(this, log).ObserveErrors(); var dns = configuration.ResolveEndPointsAsync(this, log).ObserveErrors();
#if NET40
var any = TaskEx.WhenAny(dns, TaskEx.Delay(timeoutMilliseconds));
#else
var any = Task.WhenAny(dns, Task.Delay(timeoutMilliseconds)); var any = Task.WhenAny(dns, Task.Delay(timeoutMilliseconds));
#endif
if ((await any.ForAwait()) != dns) if ((await any.ForAwait()) != dns)
{ {
throw new TimeoutException("Timeout resolving endpoints"); throw new TimeoutException("Timeout resolving endpoints");
......
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Bcl" version="1.1.8" targetFramework="net40" />
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net40" />
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net40" />
</packages>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="BuildKit"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="BuildKit">
<MSBuild Projects="StackExchange.Redis\StackExchange.Redis.csproj" Properties="Configuration=Release"/>
<MSBuild Projects="StackExchange.Redis_Net40\StackExchange.Redis_Net40.csproj" Properties="Configuration=Release"/>
</Target>
</Project>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment