Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Timer и Thread 
:(
    Опции темы
rubenhak
  Дата 9.2.2004, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



Люди кто знал что из Thread-а нелзя стартовать Timer?? Посмотрите пример, может быть я что-то ни то делаю thumbs-up.gif

..........
private System.Windows.Forms.TextBox textBox1;
public System.Windows.Forms.Timer timer1;

public Thread t;
public static Form1 myForm;
...........
............
private void button1_Click(object sender, System.EventArgs e)
{
t = new Thread(new ThreadStart(ThreadProc));
t.Start();
myForm = this;
}

public static void ThreadProc()
{
myForm.timer1.Enabled = true;
}

private void timer1_Tick(object sender, System.EventArgs e)
{
textBox1.Text = textBox1.Text + "a";
}

==========================
если кто-то знает как решить эту проблемму плиз скажите.

PM WWW MSN   Вверх
rubenhak
Дата 9.2.2004, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



smile.gif smile.gif хе хе , smile.gif smile.gif хотел в находки добавить но случайно новую тему создал.
PM WWW MSN   Вверх
AntonSaburov
Дата 9.2.2004, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



Цитата
если кто-то знает как решить эту проблемму плиз скажите.


Цитата
t = new Thread(new ThreadStart(ThreadProc));
t.Start();
myForm = this;


А ты случаем порядок не перепутал ?
Сначала хорошо бы присвоить форме this, а потом тред запускать.

И у меня все замечательно работает. Хотя странное какое-то решение. Можно было бы без всяких static обойтись.
А то присваивание форме - странное решение.

Код

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

namespace WindowsApplication1
{
   /// <summary>
   /// Summary description for Form1.
   /// </summary>
   public class Form1 : System.Windows.Forms.Form
   {
       private static Form1 myForm;
       private Thread th;
       private System.Windows.Forms.Button button1;
       protected System.Timers.Timer timer1;
       private System.Windows.Forms.TextBox textBox1;
       /// <summary>
       /// Required designer variable.
       /// </summary>
       private System.ComponentModel.Container components = null;

       public Form1()
       {
           //
           // Required for Windows Form Designer support
           //
           InitializeComponent();

           //
           // TODO: Add any constructor code after InitializeComponent call
           //
       }

       /// <summary>
       /// Clean up any resources being used.
       /// </summary>
       protected override void Dispose( bool disposing )
       {
           if( disposing )
           {
               if (components != null)
               {
                   components.Dispose();
               }
           }
           base.Dispose( disposing );
       }

       #region Windows Form Designer generated code
       /// <summary>
       /// Required method for Designer support - do not modify
       /// the contents of this method with the code editor.
       /// </summary>
       private void InitializeComponent()
       {
           this.button1 = new System.Windows.Forms.Button();
           this.timer1 = new System.Timers.Timer();
           this.textBox1 = new System.Windows.Forms.TextBox();
           ((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit();
           this.SuspendLayout();
           //
           // button1
           //
           this.button1.Location = new System.Drawing.Point(24, 16);
           this.button1.Name = "button1";
           this.button1.TabIndex = 0;
           this.button1.Text = "button1";
           this.button1.Click += new System.EventHandler(this.button1_Click);
           //
           // timer1
           //
           this.timer1.Enabled = true;
           this.timer1.Interval = 2000;
           this.timer1.SynchronizingObject = this;
           this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed);
           //
           // textBox1
           //
           this.textBox1.Location = new System.Drawing.Point(24, 56);
           this.textBox1.Name = "textBox1";
           this.textBox1.TabIndex = 1;
           this.textBox1.Text = "textBox1";
           //
           // Form1
           //
           this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
           this.ClientSize = new System.Drawing.Size(292, 273);
           this.Controls.Add(this.textBox1);
           this.Controls.Add(this.button1);
           this.Name = "Form1";
           this.Text = "Form1";
           ((System.ComponentModel.ISupportInitialize)(this.timer1)).EndInit();
           this.ResumeLayout(false);
       }
       #endregion

       /// <summary>
       /// The main entry point for the application.
       /// </summary>
       [STAThread]
       static void Main()
       {
           Application.Run(new Form1());
       }

       private void button1_Click(object sender, System.EventArgs e)
       {
           th = new Thread(new ThreadStart(ThreadProc));
           myForm = this;
           th.Start();
       }

       public static void ThreadProc()
       {
           myForm.timer1.Enabled = true;
       }

       private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
       {
           textBox1.Text += "a";
       }
   }
}

PM MAIL WWW ICQ   Вверх
rubenhak
Дата 9.2.2004, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



спасибо за помощь но проблемма была не в static-е а в том что я использовал
"System.Windows.Forms.Timer" а ты "System.Timers.Timer"
кстати откыда ты откопал этот таймер ? smile.gif
PM WWW MSN   Вверх
AntonSaburov
Дата 9.2.2004, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



А-а-а. Ты дурацкий таймер использовал. Он - "This Windows timer is designed for a single-threaded environment".

А я использовал нормальный таймер - из закладки "Components". Этот таймер нормально работает в нескольких тредах.
PM MAIL WWW ICQ   Вверх
rubenhak
Дата 9.2.2004, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 146
Регистрация: 17.9.2003
Где: Yerevan

Репутация: нет
Всего: нет



ну спасибо smile.gif
PM WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.