Avatar billede jens_bach Nybegynder
22. januar 2009 - 20:49 Der er 3 kommentarer og
1 løsning

BackgroundWorker og delegate Hvordan ?

Hej ...

det med BackgroundWorker og delegate er der en der har en lille "hemlig" kode de vil dele ;)

jeg kan ikke finde ud af hvordan man sender data fra en BackgroundWorker threat til fx. en listbox i ens windows form.

hvis der er en der kunne lave den stump kode vil jeg blive glad ;)

/Tak
Avatar billede kalp Novice
22. januar 2009 - 21:27 #1
opret et nyt projekt.
bare lad det være standard navn som Visual studio selv vælger for dig så kan du nemlig copy and paste nedenstående.

(du skal bare lige ligge din listBox in som også bare skal autogenereres af VS.)


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
                        InitializeComponent();
                        DoWork(); //no thead

            //with thread
                        Thread thread = new Thread(new ThreadStart(DoWork));
                        thread.Start();
        }

        private void DoWork() {
            for (int i = 0; i < 10; i++) {
                if (InvokeRequired) {
                    ParameterizedThreadStart pthead = new ParameterizedThreadStart(AddElement);
                    this.Invoke(pthead, i);
                }
                else
                    AddElement(i);
            }
        }

        private void AddElement(object element) {
            listBox1.Items.Add(element.ToString());
        }
    }
}
Avatar billede jens_bach Nybegynder
22. januar 2009 - 21:36 #2
* Imports System
    * Imports System.Collections.Generic
    * Imports System.ComponentModel
    * Imports System.Data
    * Imports System.Drawing
    * Imports System.Text
    * Imports System.Windows.Forms
    * Imports System.Threading
    *
    * Namespace WindowsApplication1
    *    Public Partial Class Form1
    *        Inherits Form
    *        Public Sub New()
    *            InitializeComponent()
    *            DoWork()
    *            'no thead
    *            'with thread
    *            Dim thread As New Thread(New ThreadStart(DoWork))
    *            thread.Start()
    *        End Sub
    *       
    *        Private Sub DoWork()
    *            For i As Integer = 0 To 9
    *                If InvokeRequired Then
    *                    Dim pthead As New ParameterizedThreadStart(AddElement)
    *                    Me.Invoke(pthead, i)
    *                Else
    *                    AddElement(i)
    *                End If
    *            Next
    *        End Sub
    *       
    *        Private Sub AddElement(ByVal element As Object)
    *            listBox1.Items.Add(element.ToString())
    *        End Sub
    *    End Class
    * End Namespace
Avatar billede jens_bach Nybegynder
22. januar 2009 - 21:37 #3
jeg takker rigtig mange gange, selv om det var i vb ;)
Avatar billede kalp Novice
22. januar 2009 - 22:03 #4
sorry=) glemmer altid og tjekke hvilket sprog:)
du fik det oversat så det er super:)
tak for point=)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester