Click here to Skip to main content
15,886,519 members
Articles / Desktop Programming / Windows Forms

AsyncWorker - A Typesafe BackgroundWorker (and about Threading in General)

Rate me:
Please Sign up or sign in to vote.
4.76/5 (23 votes)
11 Apr 2010CPOL9 min read 58.4K   1.8K   93  
Generic methods enable typesafe Threading
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="PictureBox5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        R0lGODlhHgAaANIAAAAAAIBAAP+AQP//AP///wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/sFo
        dHRwOi8vd3d3LnJ0bHNvZnQuY29tL2FuaW1hZ2ljCgpDcmVhdGVkIHdpdGggQW5pbWFnaWMgR0lGIFYg
        MS4xMGMKYnkgUmlnaHQgdG8gTGVmdCBTb2Z0d2FyZSBJbmMuCgpUbyBzdXBwcmVzcyB0aGlzIG1lc3Nh
        Z2UgaW4gdGhlIHJlZ2lzdGVyZWQgdmVyc2lvbgp1bmNoZWNrICJPcHRpb25zIHwgQW5pbWFnaWMgY29t
        bWVudCBmcmFtZSIKACH5BAkIAAQALAAAAAAeABoAAANpSLrc/jDKSesDOGvrQAjCFwYA13ig+JXmgo4j
        2xKvSs5Knd64HuM0jRDoWp02HJQMM2g2MRZlzkl9VqSAqlYWwWqrXIjwmSVTw5Iy0+xEd7/bJBwsn6tN
        5a0VD14P3BN5cT2Cf4BJSAsJACH5BAkIAAQALAAAAAAeABoAAANySLrc/jDKSau9OOvNIegPEHzgIgZj
        SQACipLc2bowA9y3Nwd7agKDYDBnQ+1mNaBwOYCdjC5Bkkl1univKXWZvEpfCuVNOCYXs7TVUNlkNxsi
        0rO85Tq6I3f9PcnpmWIYf0NDGXo4ZoZ7NYKHjBo4RAsJACH5BAkIAAQALAAAAAAeABoAAANjSLrc/jDK
        Sau9OOvNu/9gGAIk+ZFDmpoboL6r5sIwkM20ape87cyoFW5AChiPvgYQFxQekY9hTiioWnsm6bT4DAC6
        u+nKCQYrtGMiAWC9Ys+15q7rjaBja3oyKmWtsXsQPQ0JACH5BAkIAAQALAAAAAAeABoAAANySLrc/jDK
        Sau9OOvNIegPEHzgIgZjSQACipLc2bowA9y3Nwd7agKDYDBnQ+1mNaBwOYCdjC5Bkkl1univKXWZvEpf
        CuVNOCYXs7TVUNlkNxsi0rO85Tq6I3f9PcnpmWIYf0NDGXo4ZoZ7NYKHjBo4RAsJADs=
</value>
  </data>
  <data name="PictureBox6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        R0lGODlhGQATAJECAP//AAAAAOv//wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFAAACACwAAAAAGQAT
        AAACTZRiqcuKDeGL9AR0s95cs+4Z2PWBpGhNiXlmxwfE8gyMGFwH8hU//qLrBXM7B5CG7Dk4SaQK1yxG
        htFaJdhRXnca6bb5pPBmpwowxCgAACH5BAUAAAIALAsADgAHAAMAAAIGhGMJqJsFACH5BAUAAAIALA0A
        DgADAAMAAAIDjA9ZACH5BAUAAAIALAsADgAHAAIAAAIERH6GWAAh+QQFAAACACwNABAAAwABAAACAowL
        ACH5BAUAAAIALAwADgAFAAMAAAIFhC2pJwUAIfkEBQAAAgAsCwAOAAcAAwAAAgaEYwmomwUAIfkEBQAA
        AgAsCwAOAAcAAwAAAgdEfoYIGl0AACH5BAUAAAIALAwADgAFAAMAAAIFhC2pJwUAIfkEBQAAAgAsCwAO
        AAcAAgAAAgUEgmYYVgAh+QQFAAACACwLAA4ABwADAAACB1SEF5e8XAAAIfkEBQAAAgAsDQAQAAMAAQAA
        AgKECwAh+QQFAAACACwLAA4ABwADAAACBoRjCaibBQAh+QQFAAACACwLAA4ABwADAAACBoQPoRt4BQAh
        +QQFAAACACwMAA4ABQADAAACBIyPcFAAIfkEBQAAAgAsDQAQAAMAAQAAAgKECwAh+QQFAAACACwLAA4A
        BwACAAACBRSEB5dQACH5BAUAAAIALAsADgAHAAIAAAIERH6GWAAh+QQFAAACACwLAA4ABwACAAACBIwf
        gFkAIfkEBQAAAgAsCwAOAAcAAgAAAgWED6EbBQA7
</value>
  </data>
  <data name="PictureBox4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        R0lGODlhDwAPAJECAAAAAP//AAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgACACwAAAAADwAP
        AAAENFBICWqdWNTA+cVAJ3pTOI4A5ZnB1mpebM7sKbr2Xectbf0kH/AFW1k6KVUuWdp9MppfJgIAIfkE
        BQoAAgAsAwADAAkABgAABBNQACDqlCFQkHkNAhhWZGmWU6pGADs=
</value>
  </data>
  <metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
    <value>17, 17</value>
  </metadata>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Germany Germany
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions