Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2011, 19:14   #1
delias
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 27
По умолчанию Проверка OvalShape в каком потоке запущена

Мне из потока нужно перекрасить OvalShape
примерно так:
Код:
SolidColorBrush off = new SolidColorBrush(Colors.AliceBlue);
red.Fill = off;
но сделать этого не могу, т.к. возникает эксепшн о том что эта функция запущена в другом потоке.

по идее нужно использовать InvokeRequired.
для текстбокса метод this.textBox1.InvokeRequired поддерживается, а вот для OvalShape такой возможности нет.
Посоветуйте, как тут быть?
delias вне форума Ответить с цитированием
Старый 28.02.2011, 19:19   #2
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Эм. Использовать метод формы: Invoke
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 28.02.2011, 21:38   #3
delias
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 27
По умолчанию

дак в том-то и дело что для textBox1 вызывается метод Invoke(), а для ovalShape1 такого метода не существует

Error 1 'Microsoft.VisualBasic.PowerPacks.O valShape' does not contain a definition for 'Invoke' and no extension method 'Invoke' accepting a first argument of type 'Microsoft.VisualBasic.PowerPacks.O valShape' could be found (are you missing a using directive or an assembly reference?)....
delias вне форума Ответить с цитированием
Старый 28.02.2011, 23:27   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Ну я бы использовал делегат.Что-то вроде:
Код:
public static class Data
    {
        public delegate void Recolor();
        public static Recolor EventHandler;
    }
Ну а текст примера вот такой:
Код:
using System.Threading;

namespace Потоки
{
    public static class Data
    {
        public delegate void Recolor();
        public static Recolor EventHandler;
    }
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            ThreaD th = new ThreaD();
            Data.EventHandler = new Data.Recolor(this.Rep);
            new System.Threading.Thread(th.Start).Start();

        }
        public void Rep()
        {
            panel1.BackColor = Color.Azure;
        }
    }
    public class ThreaD
    {
        public void Start()
        {
            System.Threading.Thread.Sleep(1000);

            Data.EventHandler();
        }

    }
}
Возможно такой подход поможет.Хотя я с потоками не работаю...(
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как оповестить основной поток о каком-то событии в потоке (TThread)? TwiX Общие вопросы Delphi 2 11.02.2010 02:57
Проверка запущена ли ещё одна копия TaYgA Помощь студентам 9 03.01.2010 17:22
Проверка запущена ли ещё одна копия приложения Vol666 Общие вопросы Delphi 7 12.10.2009 00:56
на каком языке создаются такие программы ,какое СУБД и структура реализации БД,также на каком языке соста оля87 Помощь студентам 13 25.05.2009 18:08
Запущена ли програма? RealSHELS Общие вопросы Delphi 4 14.06.2008 21:54