|
What version of VB are you using? I have heard that using threads within VB6 is highly unstable and causes a lot of problems.
Here's a snippet from Dan Appleman, and the Desaware site:
Sigh... It seems that many readers missed my original point. The ideas was not to encourage VB programmers to use CreateThread with Visual Basic. It was to explain clearly and accurately why you shouldn't use CreateThread with Visual Basic.
So, when Visual Basic 6 turned out to be considerably less thread-safe than VB5, breaking the sample programs referenced by this article, what could I do? I suppose I could go back and revise the samples and try to make them work with VB6. But then the same problem might arise with later versions of Visual Basic as well.
Visual Basic offers good support of multithreading including multithreaded clients in ActiveX servers (this is described quite thoroughly in the latest edition of my Developing COM/ActiveX components book). I strongly encourage you to stay within the rules defined by the Visual Basic documentation and not use the CreateThread API with Visual Basic.
For those who insist on pursuing CreateThread further, to start with you should eliminate all Declare statements and use a type library instead. I don't promise that this will fix the problem, but my initial testing indicates that it is a necessary first step.
If you want the entire article goto http://www.desaware.com/articles/threadingL3.htm, his articles are knowledgable, and he is also the guy who write Win32API for Visual Basic programemrs. Have a copy of that on my desk, err...wait, no, yeah, I'm a pure VC++ programmer =)
Sam C
----
Systems Manager
Hospitality Marketing Associates
|
|
|
|
|
Ok screwed up with the last article, I can't even see the modify button weird. But here's some advice don't use the >PRE< tags for website articles<g>Sorry, Chris. Well, here's the article again about threads in VB6 from our guy Dan:
Sigh... It seems that many readers missed my original point. The ideas was not to encourage VB programmers to use CreateThread with Visual Basic. It was to explain clearly and accurately why you shouldn't use CreateThread with Visual Basic.
So, when Visual Basic 6 turned out to be considerably less thread-safe than VB5, breaking the sample programs referenced by this article, what could I do? I suppose I could go back and revise the samples and try to make them work with VB6. But then the same problem might arise with later versions of Visual Basic as well.
Visual Basic offers good support of multithreading including multithreaded clients in ActiveX servers (this is described quite thoroughly in the latest edition of my Developing COM/ActiveX components book). I strongly encourage you to stay within the rules defined by the Visual Basic documentation and not use the CreateThread API with Visual Basic.
For those who insist on pursuing CreateThread further, to start with you should eliminate all Declare statements and use a type library instead. I don't promise that this will fix the problem, but my initial testing indicates that it is a necessary first step.
-------------------------------------------
And here's his website pretty much a VB guru: http://www.desaware.com/articles/threadingL3.htm. Good luck with threading and if you come across this Chris you may want to delete the above post because I can't get to the modify or delete link =)
Sam C
----
Systems Manager
Hospitality Marketing Associates
|
|
|
|
|
I used API createThread before in VB6 without any problem but I think my problem come from using an another many AvtiveX objects under the thread function and these objects need to initialize,but how these objects initialize in VB.
best regards.
|
|
|
|
|
I used API createThread before in VB6 without any problem but I think my problem come from using an another many AvtiveX objects under the thread function and these objects need to initialize,but how these objects initialize in VB. best regards.
It doesn't matter -- if it worked before it's just because you were lucky. If you want to learn how to do threads correctly in VB go out and buy Matt Curland's new book
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
Hi everyone, i am newbie to Visual Basic. I have visual basic 6. My questions is that when a string is added to a listbox, how does the user see that information the next time the program is loaded.
I know that the info has to be saved into a text file which i know how to do but i don't know how to read the info from the file and display it into the listbox.
Thanks in advance !
Warm regards,
Sarah
|
|
|
|
|
Check out the SaveSetting and GetSetting functions.
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
During the form's Load() procedure you would Open the file for Input, Clear() the list box, then simply call Input # on the file to get a line and AddItem() to get it into the list, for each line.
If you're wondering how to know how many items there are, you should write out the number of strings (using the list box's ListCount property) to the file as the first line. Then, when you read it back in, the first thing you read is the number of lines remaining in the file to add to the list box...
Does that answer your question?
|
|
|
|
|
hi,
try this
when you type a new string and submit write the new string into a file
dim F as long
f=Freefile 'to get a valid file pointer
'open and add string to existing file
open "c:\tmp.txt" for append as f
print #f,combo1.text
close f
on form load,
dim F as long
dim mStr as string
f=Freefile
open "c:\tmp.txt" for input as f
do while not eof(f)
line input #f, mStr
combo1.additem mstr
loop
close f
|
|
|
|
|
I have developed a very simple d3dim object creating and picking routine working quite well. On the other hand, rotation and translation do not work together.On either of them the object starts from different locations.
if u can help me please contact and i'll send my little code to you as well.
Thanks
|
|
|
|
|
I am searching for insight on the relative benefits / downsides to using the "As Any" data type in VB.
My assumption is that CPU cycles are taken in order to resolve the data types at runtime vs.
the use of a stronger type declaration, but I have no numbers telling me that is the case.
Any insight appreciated
Mike
|
|
|
|
|
API calls probably don't go much faster when stronly typed.... but,
API calls ALWAYS crash if you do it wrong, so strong typing is much better but not because of speed.
|
|
|
|
|
I am searching for insight on the relative benefits / downsides to using the "As Any" data type in VB. My assumption is that CPU cycles are taken in order to resolve the data types at runtime vs. the use of a stronger type declaration, but I have no numbers telling me that is the case. Any insight appreciated
Au contraire. VB will do no type checking on an "As Any" variable (although it still needs to figure out what it's passing in order to know how to pass it). I don't think you need to worry about CPU cycles here. It's better to worry about how "As Any" will impact your code readability. If you have an API that takes one or more "As Any" arguments, is it always clear what, how and why you are passing what you're passing?
As Any is mainly useful for APIs with arguments like lParam in SendMessage that can be basically anything. Always strong type if you can, but avoid the "multiple overloads" mess for an API (like so many people do with SendMessage).
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
Hi all,
I am looking for a way to import a C++ class (exported from a DLL) in a VB or VBA project. I know how to work with "declare" for exported functions and with COM but the requirement I have is for a C++ class.
Thanks in advance!!!!!!!!
Alberto Gattegno
Software Engineer
http://www.itginc.com
|
|
|
|
|
Sorry, but I don't think this is possible (there might be some obscure trick...). You should probably write a COM wrapper after all.
--------------
"Fabricati Diem, Pvnk"
|
|
|
|
|
Not possible. In order for VB to understand a "class" it must be a COM object. VB has no idea what a straight C++ class is.
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
I need to draw a Equilateral triangle, and also rotate it and bounce it off the screen, i have seem this done before, but i dont know ehere to start,
any help in pointing me in the right direction, and any code samples would be nice
Thanx
Matt
|
|
|
|
|
I don't have time to do the details... but,
to give you a clue: What you need to do is host the directx7 library by making a 'reference (via the object browser) first, even though the machines use DX8 'cause thats where direct draw is, OK?
In your code you'll have to:
option explicit
Private MyDX7 as NEW vbDXlib.DirectX7
Private MyDirectDraw as vbDXlib.DirectDraw7
sub Form1_OnLoad()
set MyDirectDraw = MyDX7.DreateDirectDraw7
yadda...yadda..yadda...
the trick is that DX7 HAS to be created 'as new'
THEN you get DirectDraw (in-directly) which you then use some UserDefinedTypes (UDT's) to initialize a 'primary_surface' and the 1st 'offscreen_surface'. All this just to get a page flippin scheme so your stuff draws REAL_FAST... before you call your bitmap (of any shape you desire) into a 2nd 'offscreen_surface' using:
MyDirectDraw.CreateSurfaceFromFile(bla,bla,bla)
-which is a holder in memory for your 'sprite' as some call would say. You then use DirectDraw's
super cool graphics methods to paint rotated versions of the sprite (to the current degree) on a 4th 'offscreen_surface' before dumping that 4th surface to the 1st 'offscreen' surface, so that the picture will be there when the 'Form1_repaint' is called by the Operating_Sys or your animating timer control's ticker event.... Get the DirectX8 sdk and look at the vb-Billboard sample. Really, it shows you exactly what you are trying to do 'cept they made their whirly-gig go in a circle. You'll have to do the bouncing yourself, but the hard parts will be taken care of. You'll be pleasently supprised with the performance, even on a 200mmx or so you could get >45 fps especially if you have a flat color (black?) background so you don't have to clip.
PS: Try using this basic structure for gradient backgrounds, use a 128x128 bitmap created in say... ulead photoImpact's magic gradient (they have a 30 day demo for free) or other graphics package. That size is great 'cause you won't see ANY pixel lines even when the form streches it full screen, unlike the windows desktop... and it re-paints faster than you can do a loop! »geeky ain't I...
CodeCrafty®
nauhaus@swbell.net
|
|
|
|
|
Want something fast mail me(cemkalyoncu@yahoo.com). DirectX has too many depencies but if you use GDI effectively you will increase speed(setdibits API ).
|
|
|
|
|
"As New" has no speed benefit and it can actually be dangerous in some cases. Declaring the variable and then using "Set x = New Y" is exactly the same thing and is a better coding practice.
What you're trying to explain here (I think) is that late binding (Dim x As Object) is far slower than early binding or semi-late binding.
___________
Klaus
[www.vbbox.com]
|
|
|
|
|
We're loading some additional ActiveX references into our project, but it's causing 429 errors in other ActiveX objects (like grid controls) that have previously worked just fine. The VB Run-time environment won't run, and forget trying to compile anything.
We've tried moving the priority of the references up and down, but that doesn't help, except we uncovered a DAO 3.5/ADO 2.0 conflict. Any suggestions?
Austin Jones
apjones@up.com
|
|
|
|
|
Hi,
Can any one tell me some good testing tools for VB COM?
Also, can one please elaborate where can the pitfalls in a VB COM be?
Also can one one send me a sample code in which there is a memory leak in VB? (ie how to create a memory leak in VB programme)
Thanx in advance,
Regards,
~A.
|
|
|
|
|
I would like to know whether VB5.0 supports DAO? Also I need to read more than 10,000 records from a file and hence manipulate it.Which is the best method of read available with VB 5.0?If i go for binary read, i need to use the OPEN method and if it is text read can i go for Filesystemobject?
If it is a text read, which will give more performance, FSO or the open method?
I am using a number of collections and classes in my application.Will it affect the performance?
Can i be able to increase the performance by using DAO recordsets instead of Collections?
Please give me a reply
Thanks,
Sripriya
|
|
|
|
|
Hi
1) Yes DAO is available in VB 5 . ofcorse in VB 4 , DAO was the prefered way of working with databases . but why not to consider ADO which is also avaialbe under VB 5
2) I add another method , text file access as a OLEDB data source . it is a very convinient task using DAO . you will have all the luxery of ADO and Recordset in your program without a single line of code . I think it is more important to considet parsing speed of your file ( spliting in collections , sorting , ... ) than just reading speed . using ADO you can use ADODB::Recordset as a collection with sorting/parsing/searching capabilities . there is a great article on this topic in MSDN .
3) using VB code for parsing , searching or sorting is not as fast as you might desire . besides you have to do it all in your code .
4) Using DAO recordsets is a good choice too . but again you have to read the text file and parse as different fields , then write into recordset . use ADODB::Recordet to eliminate all these steps .
I hope it would be of help
|
|
|
|
|
Hi!
i want to create an offline e-book on cdrom...
is there a possibility, to start the MS IE customized (e.g. without menubar, locationbar, satusbar, ...)? JavaScript's window.open() does it, yes, but the browser-window, that initiated the window.open() function, will not self.close() without asking the user to do so..
so i am looking for a possibility to start IE customized??
thx
|
|
|
|
|
Check out the "Kiosk" mode of IE. It will probably do what you want.
|
|
|
|