473,714 Members | 4,978 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Multi-Threading Problem in VB.NET - Cannot call Invoke or InvokeAsync

hi all,

i'm using VB.NET and trying to code for contact management in a tree. all my contacts r saved in a text file and my C dll reads them one by one and sends to VB callback in a sync mode thread. so far so good. all contacts r added properly.

now when another login adds me in his contact, i recv a subscription, so i popup a form and ask for accept/reject. this all happens in a separate thread. popup form gets opened and choice is travelled back to C Dll. all in sync still. on accept C dll tells UI to add the new subscription. at this point i get an error. Cannot call Invoke or InvokeAsync on a control until the window handle has been created. I call the same method with which i added my initial contacts from file.

this is when i check for if (InvokeRequired ) then. if i dont put this check, i get another error saying cannot build control from a different thread. parent and child thread problem. so solve this i used control.invoke/ InvokeRequired. this gives me a new error as Cannot call Invoke or InvokeAsync on a control until the window handle has been created.

how to create and use this handle here. pl. advise.

my code is like -

//////this is a class to allow VB Invoke/Threads accept multiple args
Public Class Thread_string
Public Delegate Function Start(ByVal str As String, ByVal chan As Int16) As Integer
Public Shared func As Start
Public Shared str_ As String
Public Shared chan_or_userspa ce As Int16
Public Shared retval As Integer
Public Shared th As System.Threadin g.Thread

Public Class myclass_
Public Sub myfunction()
Dim ret As Integer
retval = func(str_, chan_or_userspa ce)
'th.Abort()
End Sub
End Class

Public Shared Function CreateThread(By Val funcptr As Start, ByVal arg As String, ByVal arg2 As Int16) As Integer
Dim v_myclass As New myclass_()
Dim frmpresence_ As New FrmPresence()
Dim ret As Integer
str_ = arg
chan_or_userspa ce = arg2
func = funcptr
'th = New System.Threadin g.Thread(New System.Threadin g.ThreadStart(A ddressOf v_myclass.myfun ction))
'th.Start()
Dim mi_process_new_ invite As New MethodInvoker(A ddressOf v_myclass.myfun ction)
ret = frmpresence_.In voke(mi_process _new_invite)
Return retval
End Function
End Class
/////////////////////////////////////
////////////////CALLBACK////////////////
/// ap is a Struct type that i use to send data from C dll to VB and vice-versa.

Private Function my_callback(ByR ef ap As APPEVENT) As Integer
Dim abc As System.Runtime. InteropServices .Marshal
Dim str As String
Dim retval As Integer = Success

Select Case ap.data1
Case CONTACT_START
Dim ts As New Thread_string()
If (InvokeRequired ) Then
///// when case 2 tells C dll to add contact
///(simulates the same event when UI adds a contact on
///its own. control comes to this If(InvokeRequir ed)
retval = ts.CreateThread (AddressOf process_add_mem ber,
CStr(abc.PtrToS tringAnsi(ap.st r)), ap.userspace)
/////// Here lies the current error. Handle required.
Else
///// at startup this else part is executed. this works fine.
/// without any error. as C dll sends all in sync.
Select Case ap.userspace
Case ADD_CONTACT
add_member(CStr (abc.PtrToStrin gAnsi(ap.str)))
Case ADD_GROUP
add_member(CStr (abc.PtrToStrin gAnsi(ap.str)), GROUP)
End Select
End If
Case ADD_NEW_SUBSCRI PTION
/// This is telling the C dll to add a contact. Infact C dll had send this CASE info based on case-3's user choice which opened another accept/reject invite form. UI then simulates the same process of adding a contact as did when UI adds a contact, so then C dll will in turn ask UI to add contact thru case 1- CONTACT_START. UI sends this info to C when adding a contact. this time last arg is what UI recd thru C. where as while adding contact on its own, UI sends the user entered text to C in place of CStr(abc.PtrToS tringAnsi(ap.st r)).

create_APPEVENT _local(CONTACT, -1, CONTACT_ADD, -1, -1,CStr
(abc.PtrToStrin gAnsi(ap.str)))
Case NEW_SUBSCRIPTIO N
Dim ts As New Thread_string()
If (InvokeRequired ) Then
////always get in here. never in else part. done smoothly. no
////////error. fom gets opened and choice sent to dll thru retal.
retval = ts.CreateThread (AddressOf process_new_inv ite,
CStr(abc.PtrToS tringAnsi(ap.st r)), ap.chan)
Else
process_new_inv ite(CStr(abc.Pt rToStringAnsi(a p.str)), ap.chan)
End If
End Select
Return retval
End Function
Private Function process_add_mem ber(ByVal remote As String, ByVal userspace As Int16) As Integer
Select Case userspace
Case ADD_CONTACT
add_member(remo te)
Case ADD_GROUP
add_member(remo te, GROUP)
End Select
End Function
Private Function process_new_inv ite(ByVal remote As String, ByVal chan As Int16) As Integer
Dim retval As Integer
Dim frm_new_invite As New FrmNewInvite()
Dim remote_struct As FrmNewInvite.st ruct_remote

frm_new_invite. set_invite_type (remote, chan)
frm_new_invite. ShowDialog()
remote_struct = frm_new_invite. nyget_remote()
retval = remote_struct.u ser_choice
frm_new_invite. nydispose_form( )
/////retval is returned properly....... ...... runs fine.
End Function

pl. help.......

pawan

*************** *************** ***********
* This message was posted via http://www.dotnetmonster.com
*
* Report spam or abuse by clicking the following URL:
* http://www.dotnetmonster.com/Uwe/Abu...0c583ff65b4f8c
*************** *************** ***********
Nov 21 '05 #1
0 2958

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

4
4668
by: Frank Jona | last post by:
Intellisense with C# and a multi-file assembly is not working. With VB.NET it is working. Is there a fix availible? We're using VisualStudio 2003 Regards Frank
12
3876
by: * ProteanThread * | last post by:
but depends upon the clique: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=954drf%24oca%241%40agate.berkeley.edu&rnum=2&prev=/groups%3Fq%3D%2522cross%2Bposting%2Bversus%2Bmulti%2Bposting%2522%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den ...
0
3780
by: frankenberry | last post by:
I have multi-page tiff files. I need to extract individual frames from the multi-page tiffs and save them as single-page tiffs. 95% of the time I receive multi-page tiffs containing 1 or more black and white CCITT4 compressed files (frames) inside the tiff. Every now and then I receive a mixture of black and white CCITT4 and JPEG compressed files, and sometimes just multi-page tiffs with JPEG only. The code runs great when dealing with the...
6
8172
by: cody | last post by:
What are multi file assemblies good for? What are the advantages of using multiple assemblies (A.DLL+B.DLL) vs. a single multi file assembly (A.DLL+A.NETMODULE)?
6
4891
by: Joe | last post by:
I have 2 multi-list boxes, 1 displays course categories based on a table called CATEGORIES. This table has 2 fields CATEGORY_ID, CATEGORY_NAME The other multi-list box displays courses based on a table called COURSES. This table has 2 fields CATEGORY_ID, COURSE_NAME. The CATEGORY_ID is a FK in COURSES and a PK in CATEGORIES. I want to populate the course list box based on any category(s)
4
17871
by: mimmo | last post by:
Hi! I should convert the accented letters of a string in the correspondent letters not accented. But when I compile with -Wall it give me: warning: multi-character character constant Do the problem is the charset? How I can avoid this warning? But the worst thing isn't the warning, but that the program doesn't work! The program execute all other operations well, but it don't print the converted letters: for example, in the string...
5
5992
by: Shane Story | last post by:
I can seem to get the dimensions of a frame in a multiframe tiff. After selecting activeframe, the Width/Height is still really much larger than the page's actual dimensions. When I split a TIFF to several PNG files this causes a problem, becuase the resulting image is (the page to the far left and a lot of black space surrounding it and a filesize that is larger than needed. Any ideas?
5
5763
by: bobwansink | last post by:
Hi, I'm relatively new to programming and I would like to create a C++ multi user program. It's for a project for school. This means I will have to write a paper about the theory too. Does anyone know a good place to start looking for some theory on the subject of multi user applications? I know only bits and pieces, like about transactions, but a compendium of possible approches to multi user programming would be very appreciated!
5
3282
by: dkelly925 | last post by:
Is there a way to add an If Statement to the following code so if data in a field equals "x" it will launch one report and if it equals "y" it would open another report. Anyone know how to modify this? Private Sub cmdPreview_Click() On Error GoTo Err_Handler 'Purpose: Open the report filtered to the items selected in the list box. 'Author: Allen J Browne, 2004. http://allenbrowne.com Dim varItem As Variant 'Selected items
1
9313
by: mknoll217 | last post by:
I am recieving this error from my code: The multi-part identifier "PAR.UniqueID" could not be bound. The multi-part identifier "Salary.UniqueID" could not be bound. The multi-part identifier "PAR.UniqueID" could not be bound. The multi-part identifier "PAR.PAR_Status" could not be bound. The multi-part identifier "Salary.New_Salary" could not be bound. The multi-part identifier "Salary.UniqueID" could not be bound. The multi-part...
0
8808
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9316
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9179
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
9023
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7954
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
4466
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
3160
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2525
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2113
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.