Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/50: Рейтинг темы: голосов - 50, средняя оценка - 4.84
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107

Обращение к переменной из потока

06.06.2012, 08:10. Показов 10690. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что то не пойму, меняю переменною(int j объявленную в public в основном потоке) из потока запущенного из основного.
C++
1
2
3
4
5
6
7
execute()
{
Form1->j=1;
.......дохрена кода
Form1->j=0;
Terminate();
}
но переменная почемуто не хочет принимать значение......Скажите может я гдето не прав и переменную из потока надо как то по хитрому менять, или может обратно передавать в основной поток.....
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2012, 08:10
Ответы с готовыми решениями:

Обращение к переменной из одного потока в другом
Добрый день, господа форумчане. Есть класс server, который выполняет много какого функционала и он работает в своём потоке. Есть у...

Обращение к элементу WinForms из потока, отличного от потока, в котором это элемент был создан
Пишу приложение, котором при загрузке формы в textbox на этой форме заносятся данные. Причем данных много и процесс занимает длительное...

Возможно ли обращение к переменной с использованием значения строковой переменной?
Есть структура из 20ти различных элементов. Необходимо сформировать строковую переменную, которая бы содержала названия переменных и их...

30
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.06.2012, 12:10
Студворк — интернет-сервис помощи студентам
Вторичный поток:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void Start(PVOID *p)
{
 int i;
 while ((TParam *)p)->Flag)
 {
  EnterCriticalSection((TParam *)p)->cs);
  (TParam *)p)->i=0;
  (TParam *)p)->a=1;
  for (i=8; i>0; --i)
  {
   (TParam *)p)->a*=i;
  }
  LeaveCriticalSection((TParam *)p)->cs);
  EnterCriticalSection((TParam *)p)->cs);
  (TParam *)p)->j=0;
  (TParam *)p)->b=200.0;
  for (i=8; i>0; --i)
  {
   (TParam *)p)->b/=(double)i;
  }
  LeaveCriticalSection((TParam *)p)->cs);
  EnterCriticalSection((TParam *)p)->cs);
  (TParam *)p)->i=1;
  (TParam *)p)->a=2;
  for (i=8; i>0; --i)
  {
   (TParam *)p)->a*=i;
  }
  LeaveCriticalSection((TParam *)p)->cs);
  EnterCriticalSection((TParam *)p)->cs);
  (TParam *)p)->j=1;
  (TParam *)p)->b=300.0;
  for (i=8; i>0; --i)
  {
   (TParam *)p)->b/=(double)i;
  }
  LeaveCriticalSection((TParam *)p)->cs);
 }
}
, первичный поток:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void f1()
{
 Form1->ButtonStart->Enubled=false;
  ob.flag=true;
  ob.i=-1;
  ob.j=-1;
  ob.a=0;
  ob.b=0;
 _beginthread(Start, 0, (PVOID)&ob);
 Form1->ButtonEnd->Enubled=true;
}
void f2()
{
 Form1->ButtonEnd->Enubled=false;
 ob.flag=false;
 Form1->ButtonStart->Enubled=true;
}
void f3()
{ 
 EnterCriticalSection(ob.cs);
 Form1->Edit1->Text=IntToStr(ob.i);
 Form2->Edit2->Text=IntToStr(ob.a);
 Form3->Edit2->Text=FloatToStr(ob.b);
 LeaveCriticalSection(ob.cs);
}
данные первичного потока:
C++
1
TParam ob;
тип данных, инкладится в модули обоих потоков:
C++
1
2
3
4
5
6
struct TParam
{
 bool flag;
 int i,j,a;
 double b;
};
По ButtonStart вызываешь f1(), по ButtonEnd вызываешь f2(), а по ButtonShow вызываешь f3(). Связанные данные будут иметь правильное сочетание значений.
0
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107
06.06.2012, 12:28  [ТС]
Я так понимаю это строка запускает ранее созданный поток
_beginthread(Start, 0, (PVOID)&ob);

Если честно она мне непонятна........
Можно ли подобной струтурой
C++
1
2
3
4
5
6
SCLSThread *SCLSP= new SCLSThread(true);
    SCLSP->AValueTelegram=ValueTelegram->Text;
    SCLSP->ANumPoint= NumPoint->Text;
    SCLSP->ANumTelegram=NumTelegram->Text;
    SCLSP->Priority=tpLower;
    SCLSP->Resume();
передать в поток указатель на переменную?

и как её в потоке принять, когда у нас у потока вот такая заложенная структура кода
C++
1
2
3
4
5
6
7
8
__fastcall SendTAUFThread::SendTAUFThread(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall SendTAUFThread::Execute()
{
}
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.06.2012, 12:33
Цитата Сообщение от proleha Посмотреть сообщение
Можно ли подобной струтурой
Цитата Сообщение от proleha Посмотреть сообщение
передать в поток указатель на переменную?
Указатель - не структура.

Добавлено через 1 минуту
Цитата Сообщение от proleha Посмотреть сообщение
и как её в потоке принять, когда у нас у потока вот такая заложенная структура кода
Кто сказал? Поток - не монополя borlandа.

Добавлено через 25 секунд
Цитата Сообщение от proleha Посмотреть сообщение
Если честно она мне непонятна
А как ты поток запускаешь?
0
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107
06.06.2012, 12:35  [ТС]
Добавлено через 25 секунд
А как ты поток запускаешь?[/QUOTE]

Вот так!
//создаю в приостановленном состоянии
SCLSThread *SCLSP= new SCLSThread(true);
//передаю переменные
SCLSP->AValueTelegram=ValueTelegram->Text;
SCLSP->ANumPoint= NumPoint->Text;
SCLSP->ANumTelegram=NumTelegram->Text;
// устанавливаю приоритет
SCLSP->Priority=tpLower;
//страт
SCLSP->Resume();






я имел ввиду структуру кода.......
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.06.2012, 15:17
Цитата Сообщение от proleha Посмотреть сообщение
SCLSThread *SCLSP= new SCLSThread(true);
//передаю переменные
SCLSP->AValueTelegram=ValueTelegram->Text;
SCLSP->ANumPoint= NumPoint->Text;
SCLSP->ANumTelegram=NumTelegram->Text;
// устанавливаю приоритет
SCLSP->Priority=tpLower;
//страт
SCLSP->Resume();
И зачем мудрить?

Добавлено через 2 минуты
Ладно, впиши в класс SCLSThread ещё один член - тот самый указатель и присвой его. Давай свой h файл потока, как есть. Подскажу.

Добавлено через 49 секунд
И давай декларацию типа, на который этот указатель должен указывать.
0
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107
06.06.2012, 15:31  [ТС]
Вот мой пустой вариант, для потока приложен в виде рар архива проекта.

и вот
unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{                      
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyThread *tdh=new MyThread(true);
 tdh->Priority=tpLower;
 tdh->Resume();
}
//---------------------------------------------------------------------------
unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TMemo *Memo1;
        TButton *Button1;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
int test;
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
 
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
unitпотока.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit2.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
 
//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall MyThread::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//---------------------------------------------------------------------------
 
__fastcall MyThread::MyThread(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall MyThread::Execute()
{
 //÷òî ñþäà ïèñàòü!
 Terminate();
}
//---------------------------------------------------------------------------
h файл потока
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//---------------------------------------------------------------------------
 
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class MyThread : public TThread
{            
private:
protected:
        void __fastcall Execute();
public:
        __fastcall MyThread(bool CreateSuspended);
       
 
};
//---------------------------------------------------------------------------
#endif
Вложения
Тип файла: rar поток.rar (472.4 Кб, 7 просмотров)
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.06.2012, 16:01
Цитата Сообщение от proleha Посмотреть сообщение
h файл потока
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class MyThread : public TThread
{ * * * * * *
private:
protected:
* * * * void __fastcall Execute();
public:
* * * * __fastcall MyThread(bool CreateSuspended);
};
//---------------------------------------------------------------------------
#endif
меняй на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include "Tobject.hpp"
//---------------------------------------------------------------------------
class MyThread : public TThread
{ * * * * * *
private:
protected:
* * * * void __fastcall Execute();
public:
 TPraram *ObjectFromMainThread;
* * * * __fastcall MyThread(bool CreateSuspended);
};
//---------------------------------------------------------------------------
#endif
Цитата Сообщение от proleha Посмотреть сообщение
unit1.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:* * // IDE-managed Components
* * * * TMemo *Memo1;
* * * * TButton *Button1;
* * * * void __fastcall Button1Click(TObject *Sender);
private:* * // User declarations
int test;
public: * * // User declarations
* * * * __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
меняй на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ADODB.hpp>
#include <DB.hpp>
#include <ComCtrls.hpp>
#include "Tobject.hpp"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:* * // IDE-managed Components
* * * * TMemo *Memo1;
* * * * TButton *ButtonStart;
* * * * TButton *ButtonEnd; // По дефолту эта кнопка должна быть выключена
* * * * TButton *ButtonShow;
* * * * void __fastcall ButtonStartClick(TObject *Sender);
* * * * void __fastcall ButtonEndClick(TObject *Sender);
* * * * void __fastcall ButtonShowClick(TObject *Sender);
private:* * // User declarations
int test;
public: * * // User declarations
* * * * __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
}
Цитата Сообщение от proleha Посмотреть сообщение
unit1.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
* * * * : TForm(Owner)
{ * * * * * * * * * * *
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MyThread *tdh=new MyThread(true);
*tdh->Priority=tpLower;
*tdh->Resume();
}
//---------------------------------------------------------------------------
меняй на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[quote=proleha;3132453]unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
* * * * : TForm(Owner)
{ * * * * * * * * * * *
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonStartClick(TObject *Sender)
{
 ButtonStart->Enubled=false;
 MyThread *tdh=new MyThread(true);
 tdh->ObjectFromMainThread=&Parametrs; // Эта строка и передаст парметры
*tdh->Priority=tpLower;
*tdh->Resume();
 ButtonEnd->Enubled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonEndClick(TObject *Sender)
{
 ButtonEnd->Enubled=false;
 Parametrs.flag=false;
 ButtonStart->Enubled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonShowClick(TObject *Sender)
{
 EnterCriticalSection(Parametrs.cs);
 Memo1->Add(IntToStr(Parametrs.i);
 Memo1->Add(IntToStr(Parametrs.j);
 Memo1->Add(IntToStr(a);
 Memo1->Add(FloatToStr(b);
 LeaveCriticalSection(Parametrs.cs);
}
//---------------------------------------------------------------------------
Цитата Сообщение от proleha Посмотреть сообщение
unitпотока.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// * Important: Methods and properties of objects in VCL can only be
// * used in a method called using Synchronize, for example:
//
// * * *Synchronize(UpdateCaption);
//
// * where UpdateCaption could look like:
//
// * * *void __fastcall MyThread::UpdateCaption()
// * * *{
// * * * *Form1->Caption = "Updated in a thread";
// * * *}
//---------------------------------------------------------------------------
__fastcall MyThread::MyThread(bool CreateSuspended)
* * * * : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall MyThread::Execute()
{
*//что сюда писать!
*Terminate();
}
//---------------------------------------------------------------------------
меняй на
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// * Important: Methods and properties of objects in VCL can only be
// * used in a method called using Synchronize, for example:
//
// * * *Synchronize(UpdateCaption);
//
// * where UpdateCaption could look like:
//
// * * *void __fastcall MyThread::UpdateCaption()
// * * *{
// * * * *Form1->Caption = "Updated in a thread";
// * * *}
//---------------------------------------------------------------------------
__fastcall MyThread::MyThread(bool CreateSuspended)
* * * * : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall MyThread::Execute()
{
 int i;
 ObjectFromMainThread->flag=true;
 while (ObjectFromMainThread.flag)
 {
  EnterCriticalSection((TParam *)p)->cs);
  ObjectFromMainThread->i=0;
  ObjectFromMainThread->a=1;
  for (i=8; i>0; --i)
  {
   ObjectFromMainThread->a*=i;
  }
  LeaveCriticalSection(ObjectFromMainThread->cs);
  EnterCriticalSection((TParam *)p)->cs);
  ObjectFromMainThread->j=0;
  ObjectFromMainThread->b=1000;
  for (i=8; i>0; --i)
  {
   ObjectFromMainThread->b/=(double)i;
  }
  LeaveCriticalSection(ObjectFromMainThread->cs);
  EnterCriticalSection((TParam *)p)->cs);
  ObjectFromMainThread->i=1;
  ObjectFromMainThread->a=2;
  for (i=8; i>0; --i)
  {
   ObjectFromMainThread->a*=i;
  }
  LeaveCriticalSection(ObjectFromMainThread->cs);
  EnterCriticalSection((TParam *)p)->cs);
  ObjectFromMainThread->j=1;
  ObjectFromMainThread->b=2000;
  for (i=8; i>0; --i)
  {
   ObjectFromMainThread->b/=(double)i;
  }
  LeaveCriticalSection(ObjectFromMainThread->cs);
 }
*Terminate();
}
//---------------------------------------------------------------------------
добавь файл Tobject.hpp
C++
1
2
3
4
5
6
7
8
9
10
11
/---------------------------------------------------------------------------
#ifndef TObjectH
#define TObjectH
stuct TParametrs
{
 bool flag;
 int i,j,a;
 double b;
 CRITICAL_SECTION cs;
};
#endif
Сначала создай и переменуй кнопки и только потом лезь в unit1.h!
0
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107
06.06.2012, 16:05  [ТС]
извините за тупость! Все методы работают! а точнее
1)
Form1->Param1=2;
2) если просто присвоим к указателю потока свой указатель, и можем его менять как хотим и всё будет норм.
3) также работает и h файл ...всё как писали в этой теме.......


Причина кучи постов в этой теме собственная тупость, и if запрет меняться этим переменным!.
Когда я это сделал не понмю, но целый день на эту фигню убил!.
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
06.06.2012, 16:19
Это ничего, я один раз умудрился слепить такую двухпоточную прогу, что пока вторичный не завершился, в первичном ничего не меняется, а в момент завершения в нём мгновенно появляется готовый ответ. При этом накапливал результат постепенно в течении часа и вроде писал сразу в переменные первичного потока. 11 лет прошло, а до сих пор не могу понять, почему.
0
6 / 6 / 1
Регистрация: 01.06.2012
Сообщений: 107
06.06.2012, 16:31  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Это ничего, я один раз умудрился слепить такую двухпоточную прогу, что пока вторичный не завершился, в первичном ничего не меняется, а в момент завершения в нём мгновенно появляется готовый ответ. При этом накапливал результат постепенно в течении часа и вроде писал сразу в переменные первичного потока. 11 лет прошло, а до сих пор не могу понять, почему.
пока мы разбирались с проблеммой я паралельно общению на форуме и пробам по подсказкам..набамбил свой проект в трёх разных однопоточных приложениях, которые общаются между собой по сокетам...и только так и увидел где ошибку искать.........к томуже для меня многопточность дебри, особенно с этими клинами переменных, а ещё хуже, это как сейчас, когда клина не было, а просто if
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
06.06.2012, 16:40
Причина кучи постов в этой теме собственная тупость, и if запрет меняться этим переменным!.
Когда я это сделал не понмю, но целый день на эту фигню убил!.
Но очевидно было что проблема была в другом...( не в extern переменных и не в указателях)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.06.2012, 16:40

Обращение к контролу из потока
Подскажите, как следует обращаться к контролу из другого потока? Например в этом случае: namespace SilverlightApplication3 { ...

Обращение к Label из потока
Доброго времени! Форма, на форме кнопка запуска и 2 штуки label, видимый &quot;работаю&quot; и невидимый &quot;жду&quot;. Создаем отдельный...

Обращение из потока к контролу
Приветствую! Сегодня у меня печальный день((( Пол дня потратил чтобы решить проблему, так и не смог понять в чем дело. Вернее отдаленно в...

Обращение к контролу из потока
Помогите пожалуйста разобраться с обращением к контролам из потока. Приведенный под спойлером для примера код взят помоему с msdn и...

Обращение к ListView из потока
Доброго времени суток. Не могу разобраться с доступом к listView с другого потока. Пишу прокси сервер, на каждый запрос браузера создаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru