Не знаю... все перечитал что было по ссылкам... так нифига и не работает. а надо тоже самое что и автору вопроса. даже эти инвоки делал, только не понял нафига они нужны если они не позволяют все равно передать данные из потока одного класса в контрол формы другого класса??? что this'ы что не this'ы толку нет.
это класс потоков:
Код | namespace webResponse { class ClassMyThread { private StreamReader SR; //char[] charBuff = new char[100]; //byte[] byteBuff = new byte[100]; //string stringBuff; Thread ThreadResponse; Thread ThreadMonitorRun; myForm myFormLink = new myForm();
public ClassMyThread(StreamReader streamReader) { SR = streamReader; }
public void RunThreadResponseProc(StreamReader sr) { ThreadResponse = new Thread(new ThreadStart(ThreadPesponse)); ThreadResponse.Name = "ThreadResponse"; ThreadResponse.Start(); }
public void RunThreadResponseProcMonitor() { ThreadMonitorRun = new Thread(new ThreadStart(ThreadMonitor)); ThreadMonitorRun.Name = "ThreadMonitor"; ThreadMonitorRun.Start(); }
public void ThreadPesponse() { MessageBox.Show("Thread proc Pesponse runned"); while(SR.Peek() > -1) { //SR.ReadBlock(charBuff,0,100); //myFormLink.TextHTML.Text += SR.ReadLine(); if(this.myFormLink.TextHTML.InvokeRequired) { //this.myFormLink.Te this.myFormLink.TextHTML.Invoke(new MethodInvoker(delegate { SR.ReadLine(); })); } else { this.myFormLink.TextHTML.Text += SR.ReadLine(); } } }
public void ThreadMonitor() { MessageBox.Show("Thread Monitor started"); while(ThreadResponse.IsAlive) { Thread.Sleep(50); } if(ThreadResponse.IsAlive == false) { MessageBox.Show("Thread Response ended"); SR.Close(); } } } }
|
а вот класс формы в котором вызываются или создаются потоки:
Код | public partial class myForm:Form { public myForm() { InitializeComponent(); } HttpWebRequest hwr; HttpWebResponse hwrsp; WebHeaderCollection whc;
private void buttonConnect_Click(object sender, EventArgs e) { listBoxHeaders.Items.Clear(); listBoxCookies.Items.Clear(); TextHTML.Clear(); hwr = (HttpWebRequest)WebRequest.Create(textBoxURL.Text); hwr.Method = "GET"; hwr.CookieContainer = new CookieContainer(); hwrsp = (HttpWebResponse)hwr.GetResponse(); whc = hwrsp.Headers; for(int i = 0; i < hwr.Headers.Count; i++){ listBoxMyHeaders.Items.Add(hwr.Headers.GetKey(i) + " = " + hwr.Headers.Get(i)); }
for(int i = 0; i < whc.Count; i++) { listBoxHeaders.Items.Add(whc.GetKey(i) + " = " + whc.Get(i)); }
hwrsp.Cookies = hwr.CookieContainer.GetCookies(hwr.RequestUri); foreach(Cookie cky in hwrsp.Cookies) { listBoxCookies.Items.Add(cky.Name + " = " + cky.Value); }
Stream strm = hwrsp.GetResponseStream(); StreamReader sr = new StreamReader(strm, Encoding.UTF8);
ClassMyThread ThreadWithParam = new ClassMyThread(sr); ThreadWithParam.RunThreadResponseProc(sr); ThreadWithParam.RunThreadResponseProcMonitor(); }
|
|