vb.net - Trying to create an application to pick up text on a timer but files are in use and timer doesn't work -


i trying create 'chat' application in vb.net , - being rather new programming - struggling 2 issues preventing program running.

the main purpose of program create file called chat_server.txt user can create/open. text file written first textbox (called server_text). @ point user can type text second textbox (called client_text) , press 'send' button writes chat_server.txt contents of box.

the main goal of program 2 or more copies can running on different computers , communicate on shared network without having go external server. first problem program can’t open file. visual studio says file being used process.

my second problem text in server_text textbox isn't updating other users on different computers press send button. tried overcome using timer , isn't working reason. i've tried filesystemwatcher , doesn't work either.

here's code (bearing in mind form, not console):

imports system.io  public class chat  dim file_name string  sub chat_load(byval sender system.object, byval e system.eventargs) handles mybase.load  end sub  sub create_server_click(byval sender system.object, byval e system.eventargs) handles create_server.click 'this button on form user choose location save chat_server.txt      savefiledialog1.showdialog()    'save file     savefiledialog1.openfile()     file_name = savefiledialog1.filename()  'get file path     msgbox("server file made.")  end sub  sub connect_server_click(byval sender system.object, byval e system.eventargs) handles connect_server.click   'another button on form gets user choose chat_server.txt      openfiledialog1.showdialog()    'open file     file_name = openfiledialog1.filename()     dim fileexists boolean   'tests whether file existx , whether works or not     fileexists = my.computer.filesystem.fileexists(file_name)     if fileexists = true         try             server_text.text = my.computer.filesystem.readalltext(file_name)         catch ex exception             msgbox("can't load file. try again.")         end try     else         msgbox("chat can't seem find chat file. make sure called chat_server.txt , on accessible network.")     end if  end sub  sub server_text_textchanged(byval sender system.object, byval e system.eventargs) handles server_text.textchanged      server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox  end sub  sub chat_text_textchanged(byval sender system.object, byval e system.eventargs) handles chat_text.textchanged      server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox  end sub sub chat_text_keyup(byval sender object, byval e system.windows.forms.keyeventargs) handles chat_text.keyup   'another textbox holds text user wants send chat_server.txt      if e.keycode = keys.enter  'when user presses enter send button clicked         send.performclick()         chat_text.clear()         server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox     end if  end sub  sub send_click(byval sender system.object, byval e system.eventargs) handles send.click      my.computer.filesystem.writealltext(file_name, vbcrlf & chat_text.text, true)   'when send button clicked, write contents of client_text chat_server.txt     chat_text.clear()     server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox   end sub  private sub timer1_tick(byval sender system.object, byval e system.eventargs) handles timer1.tick      server_text.text = my.computer.filesystem.readalltext(file_name)    'every 100 miliseconds, places text chat_server.txt main textbox  end sub end class 

i grateful if this, been troubling me weeks now.

thanks, 08robertsj

like other answer said, need remove line. need create file , dispose after (so handles released). also, set timer lower 1000ms. created boolean variable check if connection has been made before file read timer. remember check timer enabled in settings.

here code:

imports system.io  public class form1      dim file_name string     dim connected boolean      sub chat_load(byval sender system.object, byval e system.eventargs) handles mybase.load      end sub      sub create_server_click(byval sender system.object, byval e system.eventargs) handles create_server.click 'this button on form user choose location save chat_server.txt          savefiledialog1.showdialog()    'save file         'savefiledialog1.openfile()         file_name = savefiledialog1.filename()  'get file path         savefiledialog1.dispose()         file.create(file_name).dispose()         msgbox("server file made.")         connected = true      end sub      sub connect_server_click(byval sender system.object, byval e system.eventargs) handles connect_server.click   'another button on form gets user choose chat_server.txt          openfiledialog1.showdialog()    'open file         file_name = openfiledialog1.filename()         dim fileexists boolean   'tests whether file existx , whether works or not         fileexists = my.computer.filesystem.fileexists(file_name)         if fileexists = true             try                 server_text.text = my.computer.filesystem.readalltext(file_name)             catch ex exception                 msgbox("can't load file. try again.")             end try         else             msgbox("chat can't seem find chat file. make sure called chat_server.txt , on accessible network.")         end if      end sub      sub server_text_textchanged(byval sender system.object, byval e system.eventargs) handles server_text.textchanged          server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox      end sub      sub chat_text_textchanged(byval sender system.object, byval e system.eventargs) handles chat_text.textchanged          server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox      end sub     sub chat_text_keyup(byval sender object, byval e system.windows.forms.keyeventargs) handles chat_text.keyup   'another textbox holds text user wants send chat_server.txt          if e.keycode = keys.enter  'when user presses enter send button clicked             send.performclick()             chat_text.clear()             server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox         end if      end sub      sub send_click(byval sender system.object, byval e system.eventargs) handles send.click          my.computer.filesystem.writealltext(file_name, vbcrlf & chat_text.text, true)   'when send button clicked, write contents of client_text chat_server.txt         chat_text.clear()         server_text.text = my.computer.filesystem.readalltext(file_name)    'places text chat_server.txt main textbox       end sub      private sub timer1_tick(byval sender system.object, byval e system.eventargs) handles timer1.tick          if connected             server_text.text = my.computer.filesystem.readalltext(file_name)    'every 100 miliseconds, places text chat_server.txt main textbox         end if      end sub end class 

if want make proper program, should check out tcp examples in vb.net. here tutorial: http://www.codeproject.com/articles/38914/a-tcp-ip-chat-program


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -