Saako Visual Basic.netissä parhaillaan suorituksessa olevan rutiinin keskeytettyä jotenkin?
Eli on sellainen tilanne, että ohjelmani on etsimässä tietoja isosta Excel-taulukosta, käyttäen Excelin omaa hakua. Excelin haku on melko hidas kun pitää etsiä kaikki solut, joihin hakusana täsmää ja soluja on tuhansia. Nyt jos käy niin, että käyttäjä vahingossa antaa sellaisen hakusanan, joka täsmää melkein jokaiseen soluun, niin haku vaan kestää ja kestää.
Pitäisi saada tehtyä formille nappi "Keskeytä haku".
Normaalistihan tuo napinpainallus jää muistiin ja sitä palvellaan vasta sitten kun meneillään oleva rutiini on suoritettu loppuun.
Miten saan ohjelman reagoimaan heti tuohon nappiin?
Teet erikseen threadin haulle ja sitten
thread.abort()
Niko kirjoitti:
Teet erikseen threadin haulle ja sitten
thread.abort()
Miten tehdään erikseen thread?
Pitäisikö siis avata toinen moduli, vai miten?
Ongelmani varsinaisesti ratkesikin jo sattumalta tuolla toisessa säikeessä: "Tekstibokseja tabeihin? *VB 6*".
DoEvents oli se mitä etsin.
Kiitos vastauksesta! :)
https://www.ohjelmointiputka.net/keskustelu/8212-beep-varastaa-fokuksen-säikeetkö-apuun
Siinä niistä säikeistä.
Metabolix kirjoitti:
https://www.ohjelmointiputka.net/keskustelu/8212-beep-varastaa-fokuksen-säikeetkö-apuun
Siinä niistä säikeistä.
Ahaa...
Idea selvisi tuolta. Mielenkiintoista! Tuota voi tarvita joskus.
Tällä kertaa pärjäsin kuitenkin hyvin tuolla DoEventsillä.
Tuolla mainitsemassasi osoitteessa kun on tuo DoEvents-esimerkki ja juttua siitä että kaksi kertaa pitää klikata sitä Button2:sta, niin ihan samaan ongelmaan törmäsin.
Kokeilin kaikenlaista ja huomasin että sitten alkaa toimia kun siirtää focuksen pois siltä controllilta, jonka event on parhaillaan suorituksessa. Eli vaikka:
Button2.Select()
Tai ihan mihin tahansa controliin, kunhan vaan pois Button1:ltä.
En tiedä miksi noin, mutta tuntuisi toimivan nyt yhdellä klikkauksella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.