Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#1271
Cita de: cNoob en  3 Febrero 2018, 22:02 PMcuando trato de usarlos en un programa el compilador me da error en la linea en la que lo importo.

(...)

Si alguien sabe que puede causarlo me seria de gran ayuda.

...¿tenemos que adivinar cual es el mensaje de error que te sale?.

Saludos!
#1272
Cita de: rigorvzla en  3 Febrero 2018, 23:21 PM
Código (csharp) [Seleccionar]
textbox.AppendText(speech); <-- si yo coloco esta linea, me escribe lo que hable en el textbox, yo necesito es que lo escriba fuera del textbox

"yo necesito es que lo escriba fuera del textbox", intenta ser más específico, eso se puede interpretar de mil formas, aclara lo que estás intentando hacer: escribir en otro control de la UI, o donde?.

Saludos!
#1273
Cita de: gregory90 en  3 Febrero 2018, 23:14 PM
Básicamente lo que me está fallando es las condiciones, en la siguiente condición por ejemplo.
Código (bash) [Seleccionar]
if "%turno%" == "%manana%

Por lo que entiendo es que siempre se va cumplir??

Lo que ocurre es que no estás expandiendo el valor de las variables %turno%, %manana%, %tarde% y %matarde%. Su valor siempre es "nulo", y comparar "nulo" con "nulo" siempre devolverá positivo.

Debes usar el operador ! en lugar de % al igual que lo haces con la variable login!, !nombre! y !apellido!... debes hacer lo mismo con todas y cada una de las variables que declares dentro del bloque del For.

Quedaría algo parecido a esto:

Código (DOS) [Seleccionar]
If "!turno!" EQU "!manana!"  (net localgroup "Manana" "!login!" /add)
If "!turno!" EQU "!tarde!"   (net localgroup "Tarde"  "!login!" /add)
If "!turno!" EQU "!matarde!" (net localgroup "Jefes"  "!login!" /add)


Saludos.
#1274
Dudas Generales / Re: ¿Como conseguir bitcoins?
3 Febrero 2018, 22:10 PM
Cita de: Dragonlucas999 en  3 Febrero 2018, 21:59 PMDE FORMA GRATIS

NADA es gratuito, o pagas con dinero, o con tu tiempo y esfuerzo.

Cita de: Dragonlucas999 en  3 Febrero 2018, 21:59 PMPaginas web?

Puedes usar cualquier servicio PTC (Paid to Click) que te pague en Bitcoins... un horrible esfuerzo diario por una miserable cantidad que nunca llegará a ser rentable en absoluto.

Cita de: Dragonlucas999 en  3 Febrero 2018, 21:59 PMProgramas?

¿Programas, legales?: cualquier miner de Bitcoins... suponiendo que te puedas permitir el coste de electricidad.

Si buscas el típico Bot que te promete convertirte en millonario por que automatiza cuentas de 50 servicios PTC y el programa solo cuesta entre 5€ o 20€ pues... bueno, hay muchos en Internet, puedes probar alguno... y luego arrepentirte xD.

La mejor forma de obtener Bitcoins hoy en día es COMPRÁNDOLOS, o consumiendo la electricidad del vecino, no le des más vueltas... es perder el tiempo.

Saludos!
#1275
Cita de: engel lex en  2 Febrero 2018, 18:32 PMEn este caso  para que se usan los dummy files en windows?

Como ya sabrás, a un archivo dummy se le puede asignar cualquier tamaño "falso" (1 MB, 1 GB, 1 TB, etc) en cuestión de segundos, un ejemplo malicioso de esto sería ocupar todo el espacio del disco duro de la "víctima".

Pero por supuesto ese no es el caso, este programa crea una copia/réplica/"clón" o como lo quieras llamar de una estructura de archivos y directorios creando archivos dummy de cero bytes. ¿Para qué puede servir esto?, pues para cualquier uso que a un usuario se le pueda ocurrir, yo en mi caso personal necesito hacer ese tipo de copia por que sirve como un listado interactivo de mi disco duro, me refiero, si comprimes la copia generada (todo) en un archivo zip, el usuario lo puede descomprimir y puede usar el explorador de Windows para navegar por los directorios y ver la estructura de archivos del disco duro y tal, como si estuvieras navegando en el disco duro original, solo que con archivos de cero bytes, entonces eso luego lo envío y lo utilizo como una alternativa más interactiva a un simple listado de archivos y directorios. No se si me habré explicado muy bien.

Saludos!
#1276
Cita de: **Aincrad** en 23 Enero 2018, 15:27 PM
como le haría para sustituir  símbolos y signos utilizando Textman ?

No puedo ofrecerte una solución, solo he analizado el código a simple vista, y es un horror tratar de depurar un código así en Batch, no me merece la pena invertir tiempo en intentar arreglar eso xD, si fuese un script en otro lenguaje si, pero es Batch, no merece la pena usar ese (mi) script la verdad. Mi consejo: olvida 'textman', olvida cualquier script de quien sea que esté hecho en Batch, puedes hacer lo mismo en cualquier otro lenguaje y de forma eficiente (pero eso ya lo sabes, programas en VB.NET).

Saludos!
#1277


DDMM (Dummy Drive Mirror Maker)

by Elektro Studios

Dummy Drive Mirror Maker, o simplemente DDMM, es una sencilla herramienta para crear una copia espejo de un directorio o disco duro, a otro directorio distinto.

La característica peculiar de este programa es que la copia espejo consiste en archivos "nulos" o dummies, es decir, archivos de cero bytes. La finalidad de esto es crear una copia espejo de la estructura de archivos de un directorio o disco duro, que no ocupe tamaño en disco, para diversos propósitos.

Si el programa detecta una colisión entre archivos, preguntará al usuario que hacer.

Es una herramienta práctica, segura, y sencilla de usar.




Imágenes
















Demostración

[youtube=640,360]https://www.youtube.com/watch?v=EE-HEPyt5tA[/youtube]




Descarga

El código fuente ( desarrollado en el lenguaje VB.NET ) y la aplicación compilada lo pueden descargar en el siguiente repositorio de GitHub:


PD: en el código fuente encontrarán bastante contenido recortado y gratuito de mi framework comercial ElektroKit, el cual se puede rehutilizar para otros proyectos. ¡¡consideren comprarlo aquí abajo en mi firma de usuario!!!. :P

¡¡ QUE LO DISFRUTEN !!
#1278
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.



Cita de: **Aincrad** en  2 Febrero 2018, 14:08 PM
ahora como puedo buscar en ese  ListBox la linea que tanga la Palabra CLEO

Igual que en el código que has mostrado, puedes usar LINQ con la propiedad ListBox.Items. O bien puedes usar la función ListBox.FindString() para buscar un string que empiece por los caracteres especificados, y devolver el índice del elemento.




Cita de: **Aincrad** en  2 Febrero 2018, 14:08 PM
Y mostrar esa lienea completa en un label ?.

Resolviendo lo primero, resolverás esto otro (con LINQ devolviendo el string, o de otras formas obteniendo el índice del elemento).

Saludos!
#1279
Cita de: engel lex en  2 Febrero 2018, 10:17 AM
Intenta con DHL es uno de los comunes para envío internacional

Parecen profesionales, con transporte aéreo express y tal. Gracias, me informaré.

Saludos!
#1280
¿Cómo implementar funcionalidades de pausado y reanudado en un BackgroundWorker, y funcionalidades de iniciar y cancelar síncronas?.

Les presento el componente 'ElektroBackgroundWorker', es un BackgroundWorker extendido al que le añadí las funcionalidades ya mencionadas. Su modo de empleo es practicamente idéntico que un BackgroundWorker, tan solo mencionar que el equivalente al método 'BackgroundWorker.RunWorkerAsync()' es 'ElektroBackgroundWorker.RunAsync()'.

Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Modified : 02-February-2018
' ***********************************************************************

#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

' Imports ElektroKit.Core.Threading.Enums

Imports System.ComponentModel
Imports System.Drawing
Imports System.Threading

#End Region

#Region " ElektroBackgroundWorker "

' Namespace Threading.Types

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' A extended <see cref="BackgroundWorker"/> component
   ''' with synchronous (blocking) run/cancellation support,
   ''' and asynchronous pause/resume features.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <example> This is a code example.
   ''' <code>
   ''' Friend WithEvents Worker As ElektroBackgroundWorker
   '''
   ''' Private Sub Button_Run_Click() Handles Button_Run.Click
   '''
   '''     If (Me.Worker IsNot Nothing) Then
   '''
   '''         Select Case Me.Worker.State
   '''             Case ElektroBackgroundWorkerState.Running, ElektroBackgroundWorkerState.Paused
   '''                 Me.Worker.Cancel()
   '''             Case Else
   '''                 ' Do Nothing.
   '''         End Select
   '''
   '''     End If
   '''
   '''     Me.Worker = New ElektroBackgroundWorker
   '''     Me.Worker.RunAsync()
   '''
   ''' End Sub
   '''
   ''' Private Sub Button_Pause_Click() Handles Button_Pause.Click
   '''     Me.Worker.RequestPause()
   ''' End Sub
   '''
   ''' Private Sub Button_Resume_Click() Handles Button_Resume.Click
   '''     Me.Worker.Resume()
   ''' End Sub
   '''
   ''' Private Sub Button_Cancel_Click() Handles Button_Cancel.Click
   '''     Me.Worker.Cancel()
   ''' End Sub
   '''
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;summary&gt;
   ''' ''' Handles the &lt;see cref="ElektroBackgroundWorker.DoWork"/&gt; event of the &lt;see cref="Worker"/&gt; instance.
   ''' ''' &lt;/summary&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;param name="sender"&gt;
   ''' ''' The source of the event.
   ''' ''' &lt;/param&gt;
   ''' '''
   ''' ''' &lt;param name="e"&gt;
   ''' ''' The &lt;see cref="DoWorkEventArgs"/&gt; instance containing the event data.
   ''' ''' &lt;/param&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' &lt;DebuggerStepperBoundary&gt;
   ''' Private Sub Worker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) _
   ''' Handles Worker.DoWork
   '''
   '''     Dim progress As Integer
   '''
   '''     Dim lock As Object = ""
   '''     SyncLock lock
   '''
   '''         For i As Integer = 0 To 100
   '''             If (Me.Worker.CancellationPending) Then ' Cancel the background operation.
   '''                 e.Cancel = True
   '''                 Exit For
   '''
   '''             Else
   '''                 If (Me.Worker.PausePending) Then ' Pause the background operation.
   '''                     Me.Worker.Pause() ' Blocking pause call.
   '''                 End If
   '''
   '''                 Me.DoSomething()
   '''
   '''                 If Me.Worker.WorkerReportsProgress Then
   '''                     progress = i
   '''                     Me.Worker.ReportProgress(progress)
   '''                 End If
   '''
   '''             End If
   '''
   '''         Next i
   '''
   '''     End SyncLock
   '''
   '''     If (Me.Worker.WorkerReportsProgress) AndAlso Not (Me.Worker.CancellationPending) AndAlso (progress &lt; 100) Then
   '''         Me.Worker.ReportProgress(percentProgress:=100)
   '''     End If
   '''
   ''' End Sub
   '''
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;summary&gt;
   ''' ''' Handles the &lt;see cref="ElektroBackgroundWorker.ProgressChanged"/&gt; event of the &lt;see cref="Worker"/&gt; instance.
   ''' ''' &lt;/summary&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;param name="sender"&gt;
   ''' ''' The source of the event.
   ''' ''' &lt;/param&gt;
   ''' '''
   ''' ''' &lt;param name="e"&gt;
   ''' ''' The &lt;see cref="ProgressChangedEventArgs"/&gt; instance containing the event data.
   ''' ''' &lt;/param&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' &lt;DebuggerStepperBoundary&gt;
   ''' Private Sub Worker_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) _
   ''' Handles Worker.ProgressChanged
   '''
   '''     Console.WriteLine(String.Format("Background Work Progress: {00}%", e.ProgressPercentage))
   '''
   ''' End Sub
   '''
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;summary&gt;
   ''' ''' Handles the &lt;see cref="ElektroBackgroundWorker.RunWorkerCompleted"/&gt; event of the &lt;see cref="Worker"/&gt; instance.
   ''' ''' &lt;/summary&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' ''' &lt;param name="sender"&gt;
   ''' ''' The source of the event.
   ''' ''' &lt;/param&gt;
   ''' '''
   ''' ''' &lt;param name="e"&gt;
   ''' ''' The &lt;see cref="RunWorkerCompletedEventArgs"/&gt; instance containing the event data.
   ''' ''' &lt;/param&gt;
   ''' ''' ----------------------------------------------------------------------------------------------------
   ''' &lt;DebuggerStepperBoundary&gt;
   ''' Private Sub Worker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) _
   ''' Handles Worker.RunWorkerCompleted
   '''
   '''     If (e.Cancelled) Then
   '''         Debug.WriteLine("Background work cancelled.")
   '''
   '''     ElseIf (e.Error IsNot Nothing) Then
   '''         Debug.WriteLine("Background work error.")
   '''
   '''     Else
   '''         Debug.WriteLine("Background work done.")
   '''
   '''     End If
   '''
   '''     Console.WriteLine(String.Format("State: {0}", Me.Worker.State.ToString()))
   '''
   ''' End Sub
   '''
   ''' &lt;DebuggerStepperBoundary&gt;
   ''' Private Sub DoSomething()
   '''     Thread.Sleep(TimeSpan.FromSeconds(1))
   ''' End Sub
   ''' </code>
   ''' </example>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <seealso cref="BackgroundWorker" />
   ''' ----------------------------------------------------------------------------------------------------
   <DisplayName("ElektroBackgroundWorker")>
   <Description("A extended BackgroundWorker component, with synchronous (blocking) run/cancellation support, and asynchronous pause/resume features.")>
   <DesignTimeVisible(True)>
   <DesignerCategory("Component")>
   <ToolboxBitmap(GetType(Component), "Component.bmp")>
   <ToolboxItemFilter("System.Windows.Forms", ToolboxItemFilterType.Require)>
   <DefaultEvent("DoWork")>
   Public Class ElektroBackgroundWorker : Inherits BackgroundWorker

#Region " Private Fields "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' A <see cref="ManualResetEvent"/> that serves to handle synchronous operations (Run, Cancel, Pause, Resume).
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected ReadOnly mreSync As ManualResetEvent

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' A <see cref="ManualResetEvent"/> that serves to handle asynchronous operations (RunAsync, CancelAsync, RequestPause).
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected ReadOnly mreAsync As ManualResetEvent

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Indicates whether the <see cref="BackGroundworker"/> has been initiated in synchronous mode.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected isRunSync As Boolean

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Indicates whether a synchronous cancellation operation is requested.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected isCancelSyncRequested As Boolean

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Indicates whether a (asynchronous) pause operation is requested.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Protected isPauseRequested As Boolean

#End Region

#Region " Properties "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets a value indicating whether the <see cref="ElektroBackgroundWorker"/> can report progress updates.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' <see langword="True"/> if can report progress updates; otherwise, <see langword="False"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       <Browsable(False)>
       <EditorBrowsable(EditorBrowsableState.Always)>
       <Description("A value indicating whether the ElektroBackgroundWorker can report progress updates.")>
       Public Overloads ReadOnly Property WorkerReportsProgress As Boolean
           Get
               Return MyBase.WorkerReportsProgress
           End Get
       End Property

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets a value indicating whether the <see cref="ElektroBackgroundWorker"/> supports asynchronous cancellation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' <see langword="True"/> if supports asynchronous cancellation; otherwise, <see langword="False"/>.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       <Browsable(False)>
       <EditorBrowsable(EditorBrowsableState.Always)>
       <Description("A value indicating whether the ElektroBackgroundWorker supports asynchronous cancellation.")>
       Public Overloads ReadOnly Property WorkerSupportsCancellation As Boolean
           Get
               Return MyBase.WorkerSupportsCancellation
           End Get
       End Property

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the current state of a pending background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The current state of a pending background operation.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       <Browsable(False)>
       <EditorBrowsable(EditorBrowsableState.Always)>
       <Description("The current state of a pending background operation.")>
       Public ReadOnly Property State As ElektroBackgroundWorkerState
           <DebuggerStepThrough>
           Get
               Return Me.stateB
           End Get
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Backing Field )
       ''' The current state of a pending background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Private stateB As ElektroBackgroundWorkerState = ElektroBackgroundWorkerState.Stopped

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets a value indicating whether the application has requested pause of a background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' <see langword="True"/> if the application has requested pause of a background operation;
       ''' otherwise, false.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       <Browsable(False)>
       <EditorBrowsable(EditorBrowsableState.Always)>
       <Description("A value indicating whether the application has requested pause of a background operation.")>
       Public ReadOnly Property PausePending As Boolean
           Get
               Return Me.isPauseRequested
           End Get
       End Property

#End Region

#Region " Constructors "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="ElektroBackgroundWorker"/> class.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerNonUserCode>
       Public Sub New()
           Me.mreSync = New ManualResetEvent(initialState:=False)
           Me.mreAsync = New ManualResetEvent(initialState:=True)
       End Sub

#End Region

#Region " Public Methods "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Starts execution of a background operation.
       ''' <para></para>
       ''' It blocks the caller thread until the background work is done.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to run the BackgroundWorker, the background operation must be stopped or completed.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub Run()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.Stopped, ElektroBackgroundWorkerState.Completed
                       Me.isRunSync = True
                       MyBase.WorkerReportsProgress = False
                       MyBase.WorkerSupportsCancellation = False
                       MyBase.RunWorkerAsync()
                       Me.stateB = ElektroBackgroundWorkerState.Running
                       Me.mreSync.WaitOne()

                   Case Else
                       Throw New InvalidOperationException("In order to run the BackgroundWorker, the background operation must be stopped or completed.")

               End Select

           End If

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Asynchronously starts execution of a background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to run the BackgroundWorker, the background operation must be stopped or completed.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub RunAsync()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.Stopped, ElektroBackgroundWorkerState.Completed
                       MyBase.WorkerReportsProgress = True
                       MyBase.WorkerSupportsCancellation = True
                       MyBase.RunWorkerAsync()
                       Me.stateB = ElektroBackgroundWorkerState.Running

                   Case Else
                       Throw New InvalidOperationException("In order to run the BackgroundWorker, the background operation must be stopped or completed.")

               End Select

           End If

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Pause a pending background operation.
       ''' <para></para>
       ''' It blocks the caller thread until the background work is resumed.
       ''' To resume the background work, call the <see cref="ElektroBackgroundWorker.Resume"/> method.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to pause the BackgroundWorker, firstly a pause request should be made.
       ''' </exception>
       '''
       ''' <exception cref="InvalidOperationException">
       ''' In order to pause the BackgroundWorker, the background operation must be be running.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub Pause()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.Running
                       If (Me.PausePending) Then
                           Me.mreAsync.WaitOne(Timeout.Infinite)
                       Else
                           Throw New InvalidOperationException("In order to pause the BackgroundWorker, firstly a pause request should be made.")
                       End If

                   Case Else
                       Throw New InvalidOperationException("In order to pause the BackgroundWorker, the background operation must be running.")

               End Select

           End If

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Asynchronously requests to pause a pending background operation.
       ''' <para></para>
       ''' To pause the background work after requesting a pause,
       ''' call the <see cref="ElektroBackgroundWorker.Pause"/> method.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to request a pause of the BackgroundWorker, the background operation must be running.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub RequestPause()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.Running
                       Me.isPauseRequested = True
                       Me.stateB = ElektroBackgroundWorkerState.Paused
                       Me.mreAsync.Reset()

                   Case Else
                       Throw New InvalidOperationException("In order to request a pause of the BackgroundWorker, the background operation must be running..")

               End Select

           End If

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Resume a pending paused background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to resume the BackgroundWorker, the background operation must be paused.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub [Resume]()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.Paused
                       Me.stateB = ElektroBackgroundWorkerState.Running
                       Me.isPauseRequested = False
                       Me.mreAsync.Set()

                   Case Else
                       Throw New InvalidOperationException("In order to resume the BackgroundWorker, the background operation must be paused.")

               End Select

           End If

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Requests cancellation of a pending background operation.
       ''' <para></para>
       ''' It blocks the caller thread until the remaining background work is canceled.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to cancel the BackgroundWorker, the background operation must be running or paused.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Sub Cancel()

           Me.isCancelSyncRequested = True
           Me.CancelAsync()
           Me.mreSync.WaitOne()
           Me.isCancelSyncRequested = False

       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Asynchronously requests cancellation of a pending background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <exception cref="InvalidOperationException">
       ''' In order to cancel the BackgroundWorker, the background operation must be running or paused.
       ''' </exception>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Overridable Overloads Sub CancelAsync()

           If (Me Is Nothing) Then
               Throw New ObjectDisposedException(objectName:="Me")

           Else
               Select Case Me.stateB

                   Case ElektroBackgroundWorkerState.CancellationPending
                       Exit Sub

                   Case ElektroBackgroundWorkerState.Running, ElektroBackgroundWorkerState.Paused
                       Me.mreAsync.Set() ' Resume thread if it is paused.
                       Me.stateB = ElektroBackgroundWorkerState.CancellationPending
                       MyBase.CancelAsync() ' Cancel it.

                   Case Else
                       Throw New InvalidOperationException("In order to cancel the BackgroundWorker, the background operation must be running or paused.")

               End Select

           End If

       End Sub

#End Region

#Region " Event Invocators "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Raises the <see cref="BackgroundWorker.DoWork"/> event.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="e">
       ''' An <see cref="EventArgs"/> that contains the event data.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Protected Overrides Sub OnDoWork(e As DoWorkEventArgs)
           MyBase.OnDoWork(e)

           If (Me.isRunSync) OrElse (Me.isCancelSyncRequested) Then
               Me.mreSync.Set()
           End If
       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Raises the <see cref="BackgroundWorker.ProgressChanged"/> event.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="e">
       ''' An <see cref="ProgressChangedEventArgs"/> that contains the event data.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Protected Overrides Sub OnProgressChanged(e As ProgressChangedEventArgs)
           MyBase.OnProgressChanged(e)
       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Raises the <see cref="BackgroundWorker.RunWorkerCompleted"/> event.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="e">
       ''' An <see cref="RunWorkerCompletedEventArgs"/> that contains the event data.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Protected Overrides Sub OnRunWorkerCompleted(e As RunWorkerCompletedEventArgs)
           Me.stateB = ElektroBackgroundWorkerState.Completed
           MyBase.OnRunWorkerCompleted(e)
       End Sub

#End Region

#Region " Hidden Base Members "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Starts execution of a background operation.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       <EditorBrowsable(EditorBrowsableState.Never)>
       <DebuggerStepThrough>
       Public Overridable Shadows Sub RunWorkerAsync()
           MyBase.RunWorkerAsync()
       End Sub

#End Region

#Region " IDisposable Implementation "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
       ''' <para></para>
       ''' Releases unmanaged and, optionally, managed resources.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="isDisposing">
       ''' <see langword="True"/> to release both managed and unmanaged resources;
       ''' <see langword="False"/> to release only unmanaged resources.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Protected Overrides Sub Dispose(isDisposing As Boolean)
           MyBase.Dispose(isDisposing)

           If (isDisposing) Then
               Me.mreSync.SafeWaitHandle.Close()
               Me.mreSync.SafeWaitHandle.Dispose()
               Me.mreSync.Close()
               Me.mreSync.Dispose()

               Me.mreAsync.SafeWaitHandle.Close()
               Me.mreAsync.SafeWaitHandle.Dispose()
               Me.mreAsync.Close()
               Me.mreAsync.Dispose()

               Me.isRunSync = False
               Me.stateB = ElektroBackgroundWorkerState.Stopped
           End If

       End Sub

#End Region

   End Class

' End Namespace

#End Region


+

Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Modified : 02-February-2018
' ***********************************************************************

#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

' Imports ElektroKit.Core.Threading.Types

#End Region

#Region " ElektroBackgroundWorker State "

' Namespace Threading.Enums

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Specifies the state of a <see cref="ElektroBackgroundWorker"/>.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public Enum ElektroBackgroundWorkerState As Integer

       ''' <summary>
       ''' The <see cref="ElektroBackgroundWorker"/> is stopped.
       ''' </summary>
       Stopped = 0

       ''' <summary>
       ''' The <see cref="ElektroBackgroundWorker"/> is running.
       ''' </summary>
       Running = 1

       ''' <summary>
       ''' The <see cref="ElektroBackgroundWorker"/> is paused.
       ''' </summary>
       Paused = 2

       ''' <summary>
       ''' The <see cref="ElektroBackgroundWorker"/> is pending on a cancellation.
       ''' </summary>
       CancellationPending = 3

       ''' <summary>
       ''' The <see cref="ElektroBackgroundWorker"/> is completed (stopped).
       ''' </summary>
       Completed = 4

   End Enum

' End Namespace

#End Region


Ejemplo de uso:

Código (vbnet) [Seleccionar]
Friend WithEvents Worker As ElektroBackgroundWorker

Private Sub Button_Run_Click() Handles Button_Run.Click

   If (Me.Worker IsNot Nothing) Then

       Select Case Me.Worker.State
           Case ElektroBackgroundWorkerState.Running, ElektroBackgroundWorkerState.Paused
               Me.Worker.Cancel()
           Case Else
               ' Do Nothing.
       End Select

   End If

   Me.Worker = New ElektroBackgroundWorker
   Me.Worker.RunAsync()

End Sub

Private Sub Button_Pause_Click() Handles Button_Pause.Click
   Me.Worker.RequestPause()
End Sub

Private Sub Button_Resume_Click() Handles Button_Resume.Click
   Me.Worker.Resume()
End Sub

Private Sub Button_Cancel_Click() Handles Button_Cancel.Click
   Me.Worker.Cancel()
End Sub

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Handles the <see cref="ElektroBackgroundWorker.DoWork"/> event of the <see cref="Worker"/> instance.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="sender">
''' The source of the event.
''' </param>
'''
''' <param name="e">
''' The <see cref="DoWorkEventArgs"/> instance containing the event data.
''' </param>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepperBoundary>
Private Sub Worker_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) _
Handles Worker.DoWork

   Dim progress As Integer

   Dim lock As Object = ""
   SyncLock lock

       For i As Integer = 0 To 100
           If (Me.Worker.CancellationPending) Then ' Cancel the background operation.
               e.Cancel = True
               Exit For

           Else
               If (Me.Worker.PausePending) Then ' Pause the background operation.
                   Me.Worker.Pause() ' Blocking pause call.
               End If

               Me.DoSomething()

               If Me.Worker.WorkerReportsProgress Then
                   progress = i
                   Me.Worker.ReportProgress(progress)
               End If

           End If

       Next i

   End SyncLock

   If (Me.Worker.WorkerReportsProgress) AndAlso Not (Me.Worker.CancellationPending) AndAlso (progress < 100) Then
       Me.Worker.ReportProgress(percentProgress:=100)
   End If

End Sub

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Handles the <see cref="ElektroBackgroundWorker.ProgressChanged"/> event of the <see cref="Worker"/> instance.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="sender">
''' The source of the event.
''' </param>
'''
''' <param name="e">
''' The <see cref="ProgressChangedEventArgs"/> instance containing the event data.
''' </param>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepperBoundary>
Private Sub Worker_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) _
Handles Worker.ProgressChanged

   Console.WriteLine(String.Format("Background Work Progress: {00}%", e.ProgressPercentage))

End Sub

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Handles the <see cref="ElektroBackgroundWorker.RunWorkerCompleted"/> event of the <see cref="Worker"/> instance.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <param name="sender">
''' The source of the event.
''' </param>
'''
''' <param name="e">
''' The <see cref="RunWorkerCompletedEventArgs"/> instance containing the event data.
''' </param>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepperBoundary>
Private Sub Worker_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) _
Handles Worker.RunWorkerCompleted

   If (e.Cancelled) Then
       Debug.WriteLine("Background work cancelled.")

   ElseIf (e.Error IsNot Nothing) Then
       Debug.WriteLine("Background work error.")

   Else
       Debug.WriteLine("Background work done.")

   End If

   Console.WriteLine(String.Format("State: {0}", Me.Worker.State.ToString()))

End Sub

<DebuggerStepperBoundary>
Private Sub DoSomething()
   Thread.Sleep(TimeSpan.FromSeconds(1))
End Sub