Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.237.52] |
|
Страницы: (3) 1 2 [3] все ( Перейти к последнему сообщению ) |
Сообщ.
#31
,
|
|
|
ты боишься что это перекрытие метода ? ну на сколько я понял без override в C# это не прокатит Цитата archimed7592 @ во-вторых, я использую m_form.Close, а не this.Close т. к. это static метод и в нем this нету это резонно но заметь, что метод Close в моем первом топике не static а значит у него есть this А вот close вызывает Close через m_form.Invoke(new EventHandler(m_form.Close)); лови /* -------------------------------------------------------------------------- */ namespace mcl { partial class WaitForm { /* ------------------------------------------------------------------ */ /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /* ------------------------------------------------------------------ */ /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> /// /* ------------------------------------------------------------------ */ protected override void Dispose(bool disposing) { if (disposing && (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() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WaitForm)); this.Timer = new System.Windows.Forms.Timer(); this.Panel = new Labit.Controls.CatPanel(); this.MessageLabel = new Labit.Controls.CatLabel(); this.PictureBox = new Labit.Controls.CatPictureBox(); this.ClockImages = new System.Windows.Forms.ImageList(); this.Panel.SuspendLayout(); this.SuspendLayout(); // // Timer // this.Timer.Interval = 500; this.Timer.Tick += new System.EventHandler(this.Timer_Tick); // // Panel // this.Panel.BackgroundImg = null; this.Panel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.Panel.Controls.Add(this.MessageLabel); this.Panel.Controls.Add(this.PictureBox); this.Panel.Dock = System.Windows.Forms.DockStyle.Fill; this.Panel.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular); this.Panel.ForeColor = System.Drawing.SystemColors.WindowText; this.Panel.Location = new System.Drawing.Point(0, 0); this.Panel.Name = "Panel"; this.Panel.Properties.InactiveBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(204)))), ((int)(((byte)(192))))); this.Panel.Properties.InactiveForeColor = System.Drawing.SystemColors.ControlDark; this.Panel.Properties.LookAndFeel.Background.BackgroundStyle = Labit.Controls.BackgroundStyle.Solid; this.Panel.Properties.LookAndFeel.Background.EndColor = System.Drawing.Color.Blue; this.Panel.Properties.LookAndFeel.Background.GradientOrientation = Labit.Controls.Orientation.Vertical; this.Panel.Properties.LookAndFeel.Background.GradientStyle = Labit.Controls.GradientStyle.Normal; this.Panel.Properties.LookAndFeel.Background.StartColor = System.Drawing.Color.White; this.Panel.Properties.LookAndFeel.BorderColor = System.Drawing.SystemColors.ControlDark; this.Panel.Properties.LookAndFeel.BorderStyle = Labit.Controls.BorderStyle.Flat; this.Panel.Properties.LookAndFeel.FrameType = Labit.Controls.FrameType.Raised; this.Panel.Properties.TextAlignment = Labit.Controls.ContentAlignment.MiddleCenter; this.Panel.Size = new System.Drawing.Size(200, 48); this.Panel.TabIndex = 0; this.Panel.Text = ""; // // MessageLabel // this.MessageLabel.BackgroundImg = null; this.MessageLabel.Font = new System.Drawing.Font("Tahoma", 8F, System.Drawing.FontStyle.Regular); this.MessageLabel.ForeColor = System.Drawing.SystemColors.WindowText; this.MessageLabel.Location = new System.Drawing.Point(42, 13); this.MessageLabel.Name = "MessageLabel"; this.MessageLabel.Properties.AllowFocus = false; this.MessageLabel.Properties.InactiveBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(217)))), ((int)(((byte)(204)))), ((int)(((byte)(192))))); this.MessageLabel.Properties.InactiveForeColor = System.Drawing.SystemColors.ControlDark; this.MessageLabel.Properties.LookAndFeel.Background.BackgroundStyle = Labit.Controls.BackgroundStyle.Solid; this.MessageLabel.Properties.LookAndFeel.Background.EndColor = System.Drawing.Color.Blue; this.MessageLabel.Properties.LookAndFeel.Background.GradientOrientation = Labit.Controls.Orientation.Vertical; this.MessageLabel.Properties.LookAndFeel.Background.GradientStyle = Labit.Controls.GradientStyle.Normal; this.MessageLabel.Properties.LookAndFeel.Background.StartColor = System.Drawing.Color.White; this.MessageLabel.Properties.LookAndFeel.Background.UseParentColor = true; this.MessageLabel.Properties.LookAndFeel.BorderColor = System.Drawing.SystemColors.ControlDark; this.MessageLabel.Properties.LookAndFeel.BorderStyle = Labit.Controls.BorderStyle.NoBorder; this.MessageLabel.Properties.LookAndFeel.FrameType = Labit.Controls.FrameType.Sunken; this.MessageLabel.Properties.TextAlignment = Labit.Controls.ContentAlignment.MiddleCenter; this.MessageLabel.Size = new System.Drawing.Size(148, 20); this.MessageLabel.TabIndex = 6; this.MessageLabel.Text = "Подключение к комплексу..."; // // PictureBox // this.PictureBox.BackgroundImg = null; this.PictureBox.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular); this.PictureBox.ForeColor = System.Drawing.SystemColors.WindowText; this.PictureBox.Image = ((System.Drawing.Image)(resources.GetObject("PictureBox.Image"))); this.PictureBox.ImageAttribute = Labit.Controls.ImageAttribute.iaBestFit; this.PictureBox.Location = new System.Drawing.Point(5, 7); this.PictureBox.Name = "PictureBox"; this.PictureBox.Properties.AllowFocus = false; this.PictureBox.Properties.InactiveBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); this.PictureBox.Properties.InactiveForeColor = System.Drawing.SystemColors.ControlDark; this.PictureBox.Properties.LookAndFeel.Background.BackgroundStyle = Labit.Controls.BackgroundStyle.Solid; this.PictureBox.Properties.LookAndFeel.Background.EndColor = System.Drawing.Color.Blue; this.PictureBox.Properties.LookAndFeel.Background.GradientOrientation = Labit.Controls.Orientation.Vertical; this.PictureBox.Properties.LookAndFeel.Background.GradientStyle = Labit.Controls.GradientStyle.Normal; this.PictureBox.Properties.LookAndFeel.Background.StartColor = System.Drawing.Color.White; this.PictureBox.Properties.LookAndFeel.Background.UseParentColor = true; this.PictureBox.Properties.LookAndFeel.BorderColor = System.Drawing.SystemColors.ControlDark; this.PictureBox.Properties.LookAndFeel.BorderStyle = Labit.Controls.BorderStyle.NoBorder; this.PictureBox.Properties.LookAndFeel.FrameType = Labit.Controls.FrameType.Sunken; this.PictureBox.Properties.TextAlignment = Labit.Controls.ContentAlignment.MiddleCenter; this.PictureBox.Size = new System.Drawing.Size(33, 32); this.PictureBox.TabIndex = 5; this.PictureBox.Text = ""; // // ClockImages // this.ClockImages.ImageSize = new System.Drawing.Size(128, 128); this.ClockImages.Images.Clear(); this.ClockImages.Images.Add(((System.Drawing.Image)(resources.GetObject("resource")))); this.ClockImages.Images.Add(((System.Drawing.Image)(resources.GetObject("resource1")))); this.ClockImages.Images.Add(((System.Drawing.Image)(resources.GetObject("resource2")))); this.ClockImages.Images.Add(((System.Drawing.Image)(resources.GetObject("resource3")))); // // WaitForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.AutoScroll = true; this.BackColor = System.Drawing.SystemColors.Control; this.ClientSize = new System.Drawing.Size(200, 48); this.ControlBox = false; this.Controls.Add(this.Panel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Name = "WaitForm"; this.Text = "Пожалуйста, подождите..."; this.Closed += new System.EventHandler(this.WaitForm_Closed); this.Load += new System.EventHandler(this.WaitForm_Load); this.Panel.ResumeLayout(false); this.ResumeLayout(false); } #endregion private System.Windows.Forms.Timer Timer; private Labit.Controls.CatPanel Panel; private Labit.Controls.CatLabel MessageLabel; private Labit.Controls.CatPictureBox PictureBox; private System.Windows.Forms.ImageList ClockImages; /* ------------------------------------------------------------------ */ } } |
Сообщ.
#32
,
|
|
|
Цитата zss @ здесь все ок this.Closed += new System.EventHandler(this.WaitForm_Closed); Цитата zss @ я уверен, что это перекрытие метода... поставь вместоты боишься что это перекрытие метода ? ну на сколько я понял без override в C# это не прокатит private void Close(object sender, EventArgs e) { MessageBox.Show ("..."); m_form.Close(); } |
Сообщ.
#33
,
|
|
|
Цитата archimed7592 @ и увидишь, что он крутиться в рекурсии у них сигнатуры абсолютно разные void Close() и void Close(object sender, EventArgs e) что-то не совсем клеится Добавлено Цитата archimed7592 @ я уверен, что это перекрытие метода... убеди меня |
Сообщ.
#34
,
|
|
|
Цитата zss @ согласен...что-то не совсем клеится ну хорошо, у тебя мой modal.zip компилится? просто у меня он помимо этого ещё и работает почему не работает твой? не знаю...давай проект полностью, разберемся... |
Сообщ.
#35
,
|
|
|
Цитата archimed7592 @ у хорошо, у тебя мой modal.zip компилится? просто у меня он помимо этого ещё и работает да у меня он тоже работает. есть сомнения с Application.Run(m_form) складываетя впечатление, что в этом случае нет привязки к процесу |
Сообщ.
#36
,
|
|
|
Цитата zss @ Application.Run запускает message loop в текущем потоке... я че-т не пойму, у тебя твой код не работает, а мой работает? ты разницу нашел? есть сомнения с Application.Run(m_form) складываетя впечатление, что в этом случае нет привязки к процесу |
Сообщ.
#37
,
|
|
|
сорри если влез не в тему - в начале поста интересовались почему дочерний процесс пашет при закрытии формы, его породившей...
если вопрос еще актуален то вот - по умолчанию всякий новый процесс создается из свойством IsBackground = false, что и позволяет ему существовать самостоятельно. IsBackground = true спасет отца русской демократии. ПС: както тоже пробовал создавать формы в дочерних потоках - неблагодарная затея в чом проблема не разобрался - не было ни времени ни желания. проще перенести форму в основной поток. |
Сообщ.
#38
,
|
|
|
Цитата Fox @ IsBackground = true а это чье свойство ? |
Сообщ.
#39
,
|
|
|
Сообщ.
#40
,
|
|
|
Цитата archimed7592 @ Thread.IsBackground Property а не заблокирует ли при этом порожденный поток родительский ? |
Сообщ.
#41
,
|
|
|
Цитата Thread.IsBackground Property а не заблокирует ли при этом порожденный поток родительский ? Не должен. |
Сообщ.
#42
,
|
|
|
Цитата KotovAlexander @ Не должен. странно, но тогда логично бы было его сделать по-умолчанию не false, а true |
Сообщ.
#43
,
|
|
|
При установке свойства потока Thread.IsBackground = true, создаётся поток-демон. Т. е. поток, который не может существовать без основного процесса. Умирает процесс - умирают все демоны. Естественно это свойство должно быть установлено перед Thread.Start().
Thread thr = new Thread(new ThreadStart(Run)); thr.IsBackground = true; thr.Start(); |
Сообщ.
#44
,
|
|
|
Цитата SmartX @ Т. е. поток, который не может существовать без основного процесса честно говоря я плохо знаю механизмы C#, но с точки зрения ОС не совсем логично существование потока без процесса (особенно порожденного потока от родительского) |