Moving value to textbox control from another thread
-
Dont know if is the best option but you can use a static property and then create an event handler that is fired when that property changes. i.e. thread sets property to required string Then your text box can listen for the event and load the static property value as its text
thanks for your idea but I had done it but it doesn't work.
xxx
-
Check the following links... http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokerequired.aspx[^] http://msdn.microsoft.com/en-us/library/ms171728(VS.80).aspx[^]
*jaans
thanks for your idea but I had tried the solutions recomended before and it still doesnt work... 1. the textbox control can't be seen in the calling class thread. 2. I incountered an error when i use a delegate & invoked method as advice by most of the experts.
xxx
-
"Synchronization in Threads When we have multiple threads that share data, we need to provide synchronized access to the data. We have to deal with synchronization issues related to concurrent access to variables and objects accessible by multiple threads at the same time. This is controlled by giving one thread a chance to acquire a lock on the shared resource at a time. We can think it like a box where the object is available and only one thread can enter into and the other thread is waiting outside the box until the previous one comes out." As quoted from a Code Project Article[^].
The_Collector wrote:
Thnx n advance to kind people who r ready to share thier knowledge
I ain't that kind :)
I are troll :)
Thank you again for ur quotes but it doesn't help me....
xxx
-
Thank you again for ur quotes but it doesn't help me....
xxx
-
"A Textbox from another thread"? Textboxes should be confined to the UI-thread :)
I are troll :)
i am attaching the complete codes on my post.... i don't know what to do anymore,,,, i'm stack.... tnx
xxx
-
"A Textbox from another thread"? Textboxes should be confined to the UI-thread :)
I are troll :)
i don't want to be spoonfeed but at this point, i really need a solution.... tnx again
xxx
-
i don't want to be spoonfeed but at this point, i really need a solution.... tnx again
xxx
-
I really need to stop smoking.. You were about to post code. I'll try to run your version on my machine tonight and see if I can find anything :)
I are troll :)
thanks a lot:::: below are my coding just to make sure :) : ------------------- form1.cs ------------------ 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 webbrowser { public partial class WebBrowser : Form { public delegate void DisplayHandler(string stringMessage); public event DisplayMessage; public WebBrowser() { InitializeComponent(); } private void WebBrowser_Load(object sender, EventArgs e) { Thread threadSocket = new Thread(new ThreadStart(StartSocket)); threadSocket.Start(); } public static void StartSocket() { SocketServer mySocket = new SocketServer(); mySocket.SocketDataArrival += new SocketServer.SocketServerHandler(ShowDataArrival); mySocket.InititateServer(); } void DisplayMessage(string stringMessage) { TxtBoxMsg.Text = stringMessage; } static void ShowDataArrival(object a, SocketServerArgs e) { DisplayHandler d = new DisplayHandler(); d.Invoke(e.Message); } } } --------------------------- Class1.cs ----------- using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; namespace webbrowser { public class SocketServer { public delegate void SocketServerHandler(object myObject, SocketServerArgs myArgs); public event SocketServerHandler SocketDataArrival; public void InititateServer() { StreamWriter streamWriter; StreamReader streamReader; NetworkStream networkStream; TcpListener tcpListener = new TcpListener(8000); tcpListener.Start(); Socket serverSocket = tcpListener.AcceptSocket(); try { if (serverSocket.Connected) { networkStream = new NetworkStream(serverSocket); streamWriter = new StreamWriter(networkStream); streamReader = new StreamReader(networkStream); SocketServerArgs myArgs = new SocketServerArgs(streamReader.ReadLine()); SocketDataArrival(this, myArgs); } } catch (SocketException ex) { Console.WriteLine(ex); } } public SocketServer() { } } public class SocketServerArgs : EventArgs { private string message; public SocketServerArgs(string message) { this.message = message; } public string Message { get { return message; } } } }
xxx
-
thanks a lot:::: below are my coding just to make sure :) : ------------------- form1.cs ------------------ 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 webbrowser { public partial class WebBrowser : Form { public delegate void DisplayHandler(string stringMessage); public event DisplayMessage; public WebBrowser() { InitializeComponent(); } private void WebBrowser_Load(object sender, EventArgs e) { Thread threadSocket = new Thread(new ThreadStart(StartSocket)); threadSocket.Start(); } public static void StartSocket() { SocketServer mySocket = new SocketServer(); mySocket.SocketDataArrival += new SocketServer.SocketServerHandler(ShowDataArrival); mySocket.InititateServer(); } void DisplayMessage(string stringMessage) { TxtBoxMsg.Text = stringMessage; } static void ShowDataArrival(object a, SocketServerArgs e) { DisplayHandler d = new DisplayHandler(); d.Invoke(e.Message); } } } --------------------------- Class1.cs ----------- using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; namespace webbrowser { public class SocketServer { public delegate void SocketServerHandler(object myObject, SocketServerArgs myArgs); public event SocketServerHandler SocketDataArrival; public void InititateServer() { StreamWriter streamWriter; StreamReader streamReader; NetworkStream networkStream; TcpListener tcpListener = new TcpListener(8000); tcpListener.Start(); Socket serverSocket = tcpListener.AcceptSocket(); try { if (serverSocket.Connected) { networkStream = new NetworkStream(serverSocket); streamWriter = new StreamWriter(networkStream); streamReader = new StreamReader(networkStream); SocketServerArgs myArgs = new SocketServerArgs(streamReader.ReadLine()); SocketDataArrival(this, myArgs); } } catch (SocketException ex) { Console.WriteLine(ex); } } public SocketServer() { } } public class SocketServerArgs : EventArgs { private string message; public SocketServerArgs(string message) { this.message = message; } public string Message { get { return message; } } } }
xxx
using System;
using System.Windows.Forms;
using System.Threading;namespace webbrowser
{
public partial class WebBrowser : Form
{
public delegate void DisplayHandler(string stringMessage);
//public event DisplayMessage;public WebBrowser() { InitializeComponent(); } private Thread threadSocket; private SocketServer mySocket; private void WebBrowser\_Load(object sender, EventArgs e) { threadSocket = new Thread(StartSocket); threadSocket.Start(); } public void StartSocket() { mySocket = new SocketServer(); mySocket.SocketDataArrival += ShowDataArrival; mySocket.InititateServer(); } public void DisplayMessage(string stringMessage) { TxtBoxMsg.Text = stringMessage; } void ShowDataArrival(object a, SocketServerArgs e) { DisplayHandler d = DisplayMessage; d.Invoke(e.Message); } }
}
Something like this?
I are troll :)
-
using System;
using System.Windows.Forms;
using System.Threading;namespace webbrowser
{
public partial class WebBrowser : Form
{
public delegate void DisplayHandler(string stringMessage);
//public event DisplayMessage;public WebBrowser() { InitializeComponent(); } private Thread threadSocket; private SocketServer mySocket; private void WebBrowser\_Load(object sender, EventArgs e) { threadSocket = new Thread(StartSocket); threadSocket.Start(); } public void StartSocket() { mySocket = new SocketServer(); mySocket.SocketDataArrival += ShowDataArrival; mySocket.InititateServer(); } public void DisplayMessage(string stringMessage) { TxtBoxMsg.Text = stringMessage; } void ShowDataArrival(object a, SocketServerArgs e) { DisplayHandler d = DisplayMessage; d.Invoke(e.Message); } }
}
Something like this?
I are troll :)
hi, god day,,, i tried to run your corrected code but it will still give the same error "Cross-thread operation not valid: Control 'TxtBoxMsg' accessed from a thread other than the thread it was created on."
xxx
-
using System;
using System.Windows.Forms;
using System.Threading;namespace webbrowser
{
public partial class WebBrowser : Form
{
public delegate void DisplayHandler(string stringMessage);
//public event DisplayMessage;public WebBrowser() { InitializeComponent(); } private Thread threadSocket; private SocketServer mySocket; private void WebBrowser\_Load(object sender, EventArgs e) { threadSocket = new Thread(StartSocket); threadSocket.Start(); } public void StartSocket() { mySocket = new SocketServer(); mySocket.SocketDataArrival += ShowDataArrival; mySocket.InititateServer(); } public void DisplayMessage(string stringMessage) { TxtBoxMsg.Text = stringMessage; } void ShowDataArrival(object a, SocketServerArgs e) { DisplayHandler d = DisplayMessage; d.Invoke(e.Message); } }
}
Something like this?
I are troll :)
your suggested code did not run, however i still want to thank you for your effort done. your code really help a lot to solve my problem... I made a little adjustment on your corrected code.... again, thank you very much using System; using System.Windows.Forms; using System.Threading; namespace webbrowser { public partial class WebBrowser : Form { public delegate void DisplayHandler(string stringMessage); //public event DisplayMessage; public WebBrowser() { InitializeComponent(); } private Thread threadSocket; private SocketServer mySocket; private void WebBrowser_Load(object sender, EventArgs e) { threadSocket = new Thread(StartSocket); threadSocket.Start(); } public void StartSocket() { mySocket = new SocketServer(); mySocket.SocketDataArrival += ShowDataArrival; mySocket.InititateServer(); } public void DisplayMessage(string stringMessage) { this.TxtBoxMsg.Text = stringMessage; } void ShowDataArrival(object a, SocketServerArgs e) { //DisplayHandler d = DisplayMessage; //d.Invoke(e.Message); DisplayHandler d = new DisplayHandler(DisplayMessage); this.TxtBoxMsg.Invoke(d, new object[] { e.Message }); } } }
xxx
-
your suggested code did not run, however i still want to thank you for your effort done. your code really help a lot to solve my problem... I made a little adjustment on your corrected code.... again, thank you very much using System; using System.Windows.Forms; using System.Threading; namespace webbrowser { public partial class WebBrowser : Form { public delegate void DisplayHandler(string stringMessage); //public event DisplayMessage; public WebBrowser() { InitializeComponent(); } private Thread threadSocket; private SocketServer mySocket; private void WebBrowser_Load(object sender, EventArgs e) { threadSocket = new Thread(StartSocket); threadSocket.Start(); } public void StartSocket() { mySocket = new SocketServer(); mySocket.SocketDataArrival += ShowDataArrival; mySocket.InititateServer(); } public void DisplayMessage(string stringMessage) { this.TxtBoxMsg.Text = stringMessage; } void ShowDataArrival(object a, SocketServerArgs e) { //DisplayHandler d = DisplayMessage; //d.Invoke(e.Message); DisplayHandler d = new DisplayHandler(DisplayMessage); this.TxtBoxMsg.Invoke(d, new object[] { e.Message }); } } }
xxx