Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Thread, создание наследующего класса... 
V
    Опции темы
Aline
Дата 11.2.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Привет всем!

Мне надо работать с потоками и с прерываниями, а опыта маловато.
Подкинули исходник, сделанный в Борланде, надо переделать на Visual C++, но постоянно натыкаюсь на какие то ошибки.

К примеру:

В Борланде h-файл имеет вид:

Код

#ifndef UTIRQEventH
#define UTIRQEventH
#include <Classes.hpp>

typedef void __fastcall (__closure *TCBFunc)(void*);

class TThreadEvent : public TThread
{
public:
    __fastcall TThreadEvent(bool Suspended);
    __fastcall ~TThreadEvent(void);
    void  __fastcall ESynhro(void);
    bool __fastcall SetEvent(const char* EventName);
    bool __fastcall SetCBFunction(TCBFunc SCBFunc, void *SContext);
private:
    void __fastcall Execute (void);
    HANDLE    hEvent;
    TCBFunc            CBFunc;
    void            *ContextCBFunc;
};

class TIRQEvent
{
private:
    TThreadEvent    *ThreadEvent;
    bool            EventIsSet;
    bool            CBFuncIsSet;
public:
    __fastcall TIRQEvent(void);
    __fastcall ~TIRQEvent(void);
    bool __fastcall ConnectToEvent(const char* EventName);
    bool __fastcall SetCBFunction(TCBFunc SCBFunc, void *SContext);
    bool __fastcall Start(void);
    bool __fastcall Stop(void);
};


я пытаюсь переделать в Visual C++ 

Код

#include <Windows.h>
#include <stdio.h>

using namespace System;
using namespace System::Threading;

typedef void TCBFunc(void*);

ref class TThreadEvent : System::Threading::Thread
{
    public:
            TThreadEvent(bool Suspended);
            ~TThreadEvent(void);
            void ESynhro(void);
            static bool SetEvent(const char* EventName);
            bool SetCBFunction(TCBFunc SCBFunc, void *SContext);
            
        private:
            void Execute (void);
            HANDLE    hEvent;
            TCBFunc            CBFunc;
            void            *ContextCBFunc;
};

public ref class TIRQEvent
    {
        private:
            TThreadEvent^    ThreadEvent;
            bool            EventIsSet;
            bool            CBFuncIsSet;
        public:
            TIRQEvent(void);
            ~TIRQEvent(void);
            bool ConnectToEvent(const char* EventName);
            bool SetCBFunction(TCBFunc SCBFunc, void *SContext);
            bool Start(void);
            bool Stop(void);
    };



но сразу же в строке:

Код

ref class TThreadEvent : System::Threading::Thread


возникает ошибка, а как же тогда определить, что класс наследуется от Thread?
PM MAIL   Вверх
Lazin
Дата 11.2.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



от него (потока) не надо наследовать, это делегат, работать с ним надо так:

Код

thread = new Thread(new ThreadStart(this.read_proc));
..........
private void read_proc()
{
.............

и перенести нужно в раздел .NET
PM MAIL Skype GTalk   Вверх
Aline
Дата 12.2.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Lazin, а почему в Net перенсти?
Там я так поняла в основном на C# пишут, а С# и С++ всё-таки отличаются.

То, что ты написал, я уже пробовала делать, но у меня почему то не получилось...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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