<Type Name="ThreadStateException" FullName="System.Threading.ThreadStateException" FullNameSP="System_Threading_ThreadStateException" Maintainer="ecma">
  <TypeSignature Language="ILASM" Value=".class public serializable ThreadStateException extends System.SystemException" />
  <TypeSignature Language="C#" Value="public class ThreadStateException : SystemException" />
  <MemberOfLibrary>BCL</MemberOfLibrary>
  <AssemblyInfo>
    <AssemblyName>mscorlib</AssemblyName>
    <AssemblyPublicKey>[00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ]</AssemblyPublicKey>
    <AssemblyVersion>2.0.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadingSafetyStatement>All public static members of this type are safe for multithreaded operations. No instance members are guaranteed to be thread safe.</ThreadingSafetyStatement>
  <Base>
    <BaseTypeName>System.SystemException</BaseTypeName>
  </Base>
  <Interfaces />
  <Docs>
    <summary>
      <para> Represents errors that occur when a method is invoked on
 a <see cref="T:System.Threading.Thread" /> and the
 thread is in a <see cref="P:System.Threading.Thread.ThreadState" /> that is
 invalid for the method.</para>
    </summary>
    <remarks>
      <para>Once a thread is created, it is in one or more states, as defined
 by <see cref="T:System.Threading.ThreadState" />, until it
 terminates. <see cref="T:System.Threading.ThreadStateException" /> is
 thrown by methods that cannot perform the requested operation due to
 the current state of
 a thread. For example, calling <see cref="M:System.Threading.Thread.Start" />
 on a thread that has terminated results in a <see cref="T:System.Threading.ThreadStateException" /> exception.</para>
    </remarks>
    <example>
      <para>The following example demonstrates an error that causes
 a <see cref="T:System.Threading.ThreadStateException" /> exception to be thrown.</para>
      <code lang="C#">using System;
using System.Threading;
public class ThreadWork {
 public static void DoWork() {
 Console.WriteLine("Working thread..."); 
 }
}

class ThreadStateTest{
 public static void Main() {
 ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
 Thread myThread = new Thread(myThreadDelegate);
 myThread.Start();
 Thread.Sleep(0);
 Console.WriteLine("In main. Attempting to restart myThread.");
 try {
 myThread.Start();
 }
 catch (ThreadStateException e) {
 Console.WriteLine("Caught: {0}", e.Message);
 }
 
 }
}
 </code>
      <para>The output is </para>
      <c>
        <para>Working thread... </para>
        <para>In main. Attempting to restart myThread.</para>
        <para>Caught: Thread is running or terminated. Cannot restart.</para>
      </c>
    </example>
  </Docs>
  <Members>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor()" />
      <MemberSignature Language="C#" Value="public ThreadStateException ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>
          <para> Constructs and initializes a new instance of the <see cref="T:System.Threading.ThreadStateException" />
class.</para>
        </summary>
        <remarks>
          <para>This constructor initializes the <see cref="!:System.Threading.ThreadStateException.Message" /> property of the new
   instance to a system-supplied message that describes the error, such as "The
   requested operation cannot be performed on the thread due to its current state."
   This message takes into account the current system culture.</para>
          <para>The <see cref="!:System.Threading.ThreadStateException.InnerException" /> property 
of the new instance is initialized to <see langword="null" />

.</para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(string message)" />
      <MemberSignature Language="C#" Value="public ThreadStateException (string message);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="message" Type="System.String" />
      </Parameters>
      <Docs>
        <param name="message">A <see cref="T:System.String" /> that describes the error. The content of <paramref name="message" /> is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. </param>
        <summary>
          <para> Constructs and initializes a new instance of the <see cref="T:System.Threading.ThreadStateException" />
class.</para>
        </summary>
        <remarks>
          <para>This constructor initializes the <see cref="!:System.Threading.ThreadStateException.Message" /> property
   of the new instance using <paramref name="message" />. If <paramref name="message" /> is
<see langword="null" />, the <see cref="!:System.Threading.ThreadStateException.Message" /> property is initialized to 
   the system-supplied message provided by the constructor that takes no
   arguments. </para>
          <para> The <see cref="!:System.Threading.ThreadStateException.InnerException" /> property of the new
instance is initialized to <see langword="null" />.</para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected ThreadStateException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);" />
      <MemberType>Constructor</MemberType>
      <Parameters>
        <Parameter Name="info" Type="System.Runtime.Serialization.SerializationInfo" />
        <Parameter Name="context" Type="System.Runtime.Serialization.StreamingContext" />
      </Parameters>
      <Docs>
        <param name="info">To be added.</param>
        <param name="context">To be added.</param>
        <summary>To be added.</summary>
        <remarks>To be added.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="ILASM" Value="public rtspecialname specialname instance void .ctor(string message, class System.Exception innerException)" />
      <MemberSignature Language="C#" Value="public ThreadStateException (string message, Exception innerException);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="message" Type="System.String" />
        <Parameter Name="innerException" Type="System.Exception" />
      </Parameters>
      <Docs>
        <param name="message">A <see cref="T:System.String" /> that describes the error. The content of <paramref name="message" /> is intended to be understood by humans. The caller of this constructor is required to ensure that this string has been localized for the current system culture. </param>
        <param name="innerException">An instance of <see cref="T:System.Exception" /> that is the cause of the current exception. If <paramref name="innerException" /> is non-null, then the current Exception was raised in a catch block handling <paramref name="innerException." /></param>
        <summary>
          <para>Constructs and initializes a new instance of the <see cref="T:System.Threading.ThreadStateException" />
class.</para>
        </summary>
        <remarks>
          <para>This constructor initializes the <see cref="!:System.Threading.ThreadStateException.Message" /> property
   of the new instance using <paramref name="message" /> and the <see cref="!:System.Threading.ThreadStateException.InnerException" /> property using
<paramref name="innerException" />. If <paramref name="message" /> is 
<see langword="null" />, the <see cref="!:System.Threading.ThreadStateException.Message" /> property is initialized to 
   the system-supplied message provided by the constructor that takes no
   arguments. </para>
          <para>
            <block subset="none" type="note">For more information on inner
   exceptions, see <see cref="P:System.Exception.InnerException" />.</block>
          </para>
        </remarks>
      </Docs>
      <Excluded>0</Excluded>
    </Member>
  </Members>
  <TypeExcluded>0</TypeExcluded>
  <Attributes>
    <Attribute>
      <AttributeName>System.Runtime.InteropServices.ComVisible(true)</AttributeName>
    </Attribute>
  </Attributes>
</Type>
