Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#23

Re: DLL Init, Timer läuft nicht an

  Alt 15. Apr 2010, 15:55
Hab's mit Synchronize versucht, da kommt wieder der Zugriff-Verweigert Fehler:

Delphi-Quellcode:
MyMainThread : TMyMainThread;

procedure ShowSettings(Handle: Integer);
begin
  if Assigned(MyMainThread) then
    MyMainThread.Synchronize(MyMainThread, MyMainThread.ShowDLLForm);
  
// PostThreadMessage(MyMainThread.ThreadID, WM_SHOWFORM, Handle, 0);
end;

procedure TMyMainThread.ShowDLLForm;
begin
  if Assigned(frMain) then
    frMain.ShowModal;
end;
EDIT:
Auch habe ich noch eine anderes Problem:
Ich starte ja nun einen Thread, dieser macht mir die frMain Form.
Nun arbeite ich mit einem HID-Deivce.
Wenn nun das Gerät abgesteckt wird bleibt mir die DLL bei Checkin stehen:
Delphi-Quellcode:
// method CheckIn hands a checked out HidDevice back in

procedure TJvHidDeviceController.CheckIn(var HidDev: TJvHidDevice);
begin
  if HidDev <> nil then
  begin
    HidDev.StopThread; //<----- hier bleibt es stehen
    HidDev.CloseFile;
    HidDev.CloseFileEx(omhRead);
    HidDev.CloseFileEx(omhWrite);

    if HidDev.IsPluggedIn then
    begin
      HidDev.FIsCheckedOut := False;
      Dec(FNumCheckedOutDevices);
      Inc(FNumCheckedInDevices);
    end
    else
      HidDev.Free;
    HidDev := nil;
  end;
end;
Delphi-Quellcode:
procedure TJvHidDevice.StopThread;
begin
  if Assigned(FDataThread) then
  begin
    FDataThread.Terminate;
    FDataThread.WaitFor; <<----schätze also hier das es stehen bleibt
    FDataThread.Free;
    FDataThread := nil;
  end;
end;
Wenn ich die EXE beende, die die DLL geladen hatte läuft es erst weiter.
Wiso wird das jetzt blockiert?
Delphi 2010, Update 4 & 5
  Mit Zitat antworten Zitat