Como sair de um metodo de uma dll acessada por JNI java

Boa Tarde!

Pessoal preciso da ajuda de Vocês.

O problema é o seguinte estou capturando imagens de uma câmera , onde meu acesso ao hardware e feito através de uma dll
e uso o JNI para acessa-la até ai sem problemas , porem dentro dessa dll tenho um metodo chamado startExposureAndGetImage()
que está setada a um segundo , porem quando executo o programa a imagem está levando em media entre dois e três segundos para serem
capturadas , eu deveria ter 60 imagens por minuto, porem só estou conseguindo capturar 20 imagens por minuto.

acho que minha solução seria força a saída do metodo , porem se souberem de uma formula melhor por favor me indique

segue o código abaixo



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


// Source File Name:   AcquisitionThread.java

import ij.IJ;
import ij.ImagePlus;
import ij.process.ImageProcessor;
import javax.swing.JOptionPane;

/**
 *
 * @author Javax_Javax
 */


public class AcquisitionThread extends Thread {

    public AcquisitionThread() {
    }

    public void run() {

        int Cont = 0; 
        String Mensagem = "";  
        ImagePlus img = null;
        ImageProcessor ip = null;
        imageHasBeenShow = false;
        short image[][] = null;
        long inicio = System.currentTimeMillis(); 
        
        while(!stop) {
           Cont++;
           image = AtikJNI.camera.startExposureAndGetImage();

           int width = image.length;
           int height = image[0].length;

            if(img == null) {
             img = IJ.createImage("Teste imagem", "16-bit black", width, height, Cont);
             ip = img.getProcessor();
           }
            
            int pix[][] = new int[width][height];
            for(int y = 0; y < height; y++) {
              for(int x = 0; x < width; x++) {
               pix[x][y] = image[x][y] + 32768;
              }
            }
                           
            ip.setIntArray(pix);
            
            if(!imageHasBeenShow) {
             img.show();
             imageHasBeenShow = true;
            } else {
             img.updateImage();
            }
            img.updateAndDraw();
            Salvar(Cont, img);
          }
       long tempo = (System.currentTimeMillis()-inicio) / 1000;
       if (Cont == 0){
        Mensagem = Cont+" Não foi Salva nenhuma Imagen!\n                em "+tempo+" segundos";
       }else if (Cont == 1) {
        Mensagem = Cont+" Imagem Salva Com Sucesso!\n                 em "+tempo+" segundos";
       }else{
        Mensagem = Cont+" Imagens Salvas Com Sucesso!\n                em "+tempo+" segundos";
       }
     JOptionPane.showMessageDialog(null, Mensagem, "Confirmação", JOptionPane.INFORMATION_MESSAGE, null);
    }

    
   private void Salvar(int Cont, ImagePlus imp) {
        String Pasta = "C:\\temp\\";  
        String Nome = "TesteImagem_";  
        String Tipo = "fits";  
        //String Tipo = "TIFF";  
        //String Tipo = "BMP";  
        //String Tipo = "JPEG";  
        //String Tipo = "GIF";  
        //String Tipo = "PNG";  
        //ImagePlus imp = IJ.getImage();
        IJ.saveAs(imp, Tipo, Pasta+Nome+Cont+"."+Tipo);
    }
    
    public boolean imageHasBeenShow;
    public boolean stop;

}

Att JavaX_JavaX

Você postou o código Java, não o código C - e mesmo que fosse esse o caso, como é que você pode “forçar a saída do método” ???

não acredito que você vai conseguir “para” no meio do processo assim. Provavelmente você deverá refazer o seu método para torná-lo mais eficiente, tanto o método da DLL quanto o do java