Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


ADO i trådar - kräver det CoInitialize/CoUninitialize?

Postades av 2005-02-24 12:25:50 - Kjell Rilbe, i forum delphi, Tråden har 0 Kommentarer och lästs av 1415 personer

Hej!

Har ett litet problem med ADO i en trådad applikation. Det är en enkel liten arbetstråd som skall köra ett par frågor och hämta resultaten, därefter terminera.

Problemet är att jag får motstridiga signaler om huruvida jag skall anropa CoInitialize/CoUninitialize eller inte. Är det någon här som vet hur det ligger till?

Miljön är Delphi 7 (Win32) och jag använder Delphis ADO-wrappers TADOConnection och TADODataSet. Tråden är en TThread-subklass. För den som inte vet så är den gjord sådan att konstruktorn körs i anropande tråd, sedan anropas TThread.Execute (som är virtuell) i den nya tråden. När Execute returnerar är trådens arbete slutfört och trådobjektet frigörs. Destruktorn körs i den aropande tråden. Alltså: TThread.Execute utgör trådens hela "program".

I TThread.Execute gör jag följande:

1. Skapa TADOConnection (wrapper för ADOConnection) och öppna den.
2. Skapa TADODataSet (wrapper för ADOCommand + ADORecordset).
3. Ange SQL-sats och öppna.
4. Hämta datat.
5. Stäng TADODataSet.
6. Upprepa 3-5 en eller ett par gånger med olika SQL.
7. Frigör TADODataSet,
8. Frigör TADOConnection.

Alltså: ADO-objekten används endast i den aktuella tråden, helt oberoende av alla andra trådar.

Det fungerar utmärkt *utan* CoInitialize/CoUninitialize. Hur kan det komma sig? Jag borde ju få ett felmeddelande "CoInitialize has not been called" (800401F0 hex). Eller?

Första misstanken var att Delphi's ADO-wrappers anropar CoInit/Uninit internt/automatiskt. Men det har jag kollat att de *inte* gör. Anropar jag CoInitialize själv så får jag nämligen S_OK tillbaka. Hade den redan anropats automatiskt skulle jag få S_FALSE (eller RPC_E_CHANGED_MODE om jag angav fel trådmodell).

Jag har gjort testet med eget CoInit-anrop både före steg 1, mellan steg 4 och 5, och efter steg 8. Samma resultat: S_OK. Har även testat med båda trådmodellerna (STA & MTA) och det ger också S_OK i båda fallen.

Kan någon förklara hur jag skall göra?

Mvh,
Kjell


Svara

Nyligen

  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 864
27 962
271 767
564
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies