InkeyTrap() da CA-Tools uso intensivo da CPU c/ FreeTSlice()
Enviado: 25 Fev 2008 15:27
Oi amigos, vim colocar mais um problema que percebi esses dias:
Bem quanto ao uso intensivo da CPU por parte do Clipper todo mundo já sabe e é um problema que facilmente resolvido com o uso da FreeTSlice(20), quanto a CA-Tools, basta usar a lib que funciona em modo protegido (CTP.LIB ou CTP52.LIB) que tmb o problema está resolvido, no entanto parece que nem todas as funções da LIB, mesmo em modo protegido e com o uso da FreeTSlice() estão imunes de provocar o uso intensivo da CPU.
No meu caso tenho uma função de Menu próprio que me permite dar facilmente ao usuário administrador do programa gerenciar os acessos dos outros usuários por meio do próprio menu, de forma que com o simples uso da Barra de Espaço, além do controle por nível, ele possa dizer quais funções determinado usuário pode ou não acessar; só que tenho tmb como quase todo programa Clipper tem, algumas funções residentes chamadas por meio de teclas de função em qualquer parte do programa, como a calculadora por exemplo. Ai começa a questão pois se eu usar o Inkey() para ler quais teclas pressiono durante o Menu, não é permitido o uso de teclas de funçao, pois o Inkey ler estas teclas e retorna para a variável que uso, mas não as aciona mesmo sendo uma tecla de uma função residente, em virtude disso, tive que usar a InkeyTrap() da CA-Tools que permite o envio das teclas pressionadas para a variável, exceto as teclas de função residentes, no entanto, como o menu é uma função que mt vezes fica em uso constante, pois acotece do usuário entrar, mas não ir a nenhuma rotina específica, mas ficar no menu, e essa função da CA-Tools (InkeyTrap()) provoca um uso de 60% a 85% da CPU direto.
Lembro a todos que uso o FreeTSlice(), a lib da CA-Tools é a que funciona em modo Protegido, e que só acontece com essa função InkeyTrap(). Já consegui uma alternativa para resolver o problema, mas alguém sabe por que isso acontece???
Um abraço a todos e fico na espera
Bem quanto ao uso intensivo da CPU por parte do Clipper todo mundo já sabe e é um problema que facilmente resolvido com o uso da FreeTSlice(20), quanto a CA-Tools, basta usar a lib que funciona em modo protegido (CTP.LIB ou CTP52.LIB) que tmb o problema está resolvido, no entanto parece que nem todas as funções da LIB, mesmo em modo protegido e com o uso da FreeTSlice() estão imunes de provocar o uso intensivo da CPU.
No meu caso tenho uma função de Menu próprio que me permite dar facilmente ao usuário administrador do programa gerenciar os acessos dos outros usuários por meio do próprio menu, de forma que com o simples uso da Barra de Espaço, além do controle por nível, ele possa dizer quais funções determinado usuário pode ou não acessar; só que tenho tmb como quase todo programa Clipper tem, algumas funções residentes chamadas por meio de teclas de função em qualquer parte do programa, como a calculadora por exemplo. Ai começa a questão pois se eu usar o Inkey() para ler quais teclas pressiono durante o Menu, não é permitido o uso de teclas de funçao, pois o Inkey ler estas teclas e retorna para a variável que uso, mas não as aciona mesmo sendo uma tecla de uma função residente, em virtude disso, tive que usar a InkeyTrap() da CA-Tools que permite o envio das teclas pressionadas para a variável, exceto as teclas de função residentes, no entanto, como o menu é uma função que mt vezes fica em uso constante, pois acotece do usuário entrar, mas não ir a nenhuma rotina específica, mas ficar no menu, e essa função da CA-Tools (InkeyTrap()) provoca um uso de 60% a 85% da CPU direto.
Lembro a todos que uso o FreeTSlice(), a lib da CA-Tools é a que funciona em modo Protegido, e que só acontece com essa função InkeyTrap(). Já consegui uma alternativa para resolver o problema, mas alguém sabe por que isso acontece???
Um abraço a todos e fico na espera