| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
KKKinyo Invitado
|
Publicado: Vie 04 Oct, 2002 5:36 pm Asunto: función SetThreadPriority |
|
|
Tengo un problema con la función SetThreadPriority, estoy intentando cambiar la prioridad de una thread, he probado mediante esta función directamente y siempre devuelve 0 (error) al ejecutarla.
Asi que he probado a suspender primero el thread, cambiar la prioridad y reanudar la ejecución del thread, pero el resultado es el mismo...¿Alguien sabe si tiene truco esta función?
el código que usé es el siguiente donde "InputObj" es el thread en cuestión:
InputObj->Suspend();
SetThreadPriotity(InputObj,THREAD_PRIORITY_HIGHEST);
InputObj->Resume();
Agradecería cualquier sugerencia , gracias por adelantado |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 04 Oct, 2002 6:20 pm Asunto: |
|
|
Si estas usando la clase TThread puedes cambiar la prioridad así:
// TuThread->Priority = ...
InputObj->Priority = tpHighest;
y si quieres usar la función del API que estas usando fíjate que pide el HANDLE y no puntero:
SetThreadPriority(
reinterpret_cast<HANDLE>(InputObj->Handle),
THREAD_PRIORITY_HIGHEST ); |
|
| Volver arriba |
|
 |
KKKinyo Invitado
|
Publicado: Vie 04 Oct, 2002 6:30 pm Asunto: |
|
|
Verdura de la buena!, gracias Leo, he probado con las dos versiones que me comentas y las dos van bien, así que creo que voy a usar la de InputObj->Priority directamente.
¿Sabes si alguna se ejecuta en menor tiempo que la otra? |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 04 Oct, 2002 6:38 pm Asunto: |
|
|
La propiedad esa lo que hace es llamar a la función del API. Este es el código fuente original de Borland para esa propiedad:
| Código: | property Priority: Integer read GetPriority write SetPriority;
procedure TThread.SetPriority(Value: TThreadPriority);
begin
CheckThreadError(SetThreadPriority(FHandle, Priorities[Value]));
end; |
|
|
| Volver arriba |
|
 |
|