This problem is difficult to explain, I hope I get the idea across ok.Â
There is a json file on a Raspberry Pi. I have a continuously running program (Visual Basic) on my windows laptop that is reading and displaying the contents of that file via ssh.  It reads and updates the displayed data every 1 second.  Initially, on start, it has the correct data. There is a python sketch running on the Pi that occasionally updates the pi file.Â
The problem occurs after python updates the file, the win program does not see that data changed UNTIL I first use win explorer to view the pi file. As soon as I open the file with explorer the continuously running win program instantly shows the correct data. If I use cat on the pi, it always shows the correct data in the file.
Here are the steps to make this happen:
1.    Start the win program loop and the data shown is correct.
2.    Update the json file with known data using a python sketch
3.    The data displayed in the win program shows the OLD data, not the data written in #2 above
Â
Now the confusing part...  If I use the windows explorer to view that file, instantly, #3 above shows the correct data!!!
Here is the python code that updates the file
Here is the VB.net subroutine that is called once per second
https://www.dropbox.com/s/2296hxqyj6hnum4/vb.jpg?dl=0
There is a json file on a Raspberry Pi. I have a continuously running program (Visual Basic) on my windows laptop that is reading and displaying the contents of that file via ssh.  It reads and updates the displayed data every 1 second.  Initially, on start, it has the correct data. There is a python sketch running on the Pi that occasionally updates the pi file.Â
The problem occurs after python updates the file, the win program does not see that data changed UNTIL I first use win explorer to view the pi file. As soon as I open the file with explorer the continuously running win program instantly shows the correct data. If I use cat on the pi, it always shows the correct data in the file.
Here are the steps to make this happen:
1.    Start the win program loop and the data shown is correct.
2.    Update the json file with known data using a python sketch
3.    The data displayed in the win program shows the OLD data, not the data written in #2 above
Â
Now the confusing part...  If I use the windows explorer to view that file, instantly, #3 above shows the correct data!!!
Here is the python code that updates the file
# write the status file data    def write_status_file(self):       self.status_succeded = False       while True:         time.sleep(.1)         print("write")         print(self.data)         try:            with open('/home/pi/sprinkler/status.json', 'w') as self.stat:               json.dump(self.data, self.stat)               break         except IOError as e:            print "I/O error({0}): {1}".format(e.errno, e.strerror)         except ValueError:            print ("Can't write file status.json")Â
Here is the VB.net subroutine that is called once per second
Output:Â Â Â ' read and display the status.json file
   Public Sub read_status_file()
     Dim status_string As String = ""
     Dim status_reader As System.IO.StreamReader
     Dim retryCount As Integer = 0
     Dim wasSuccessful As Boolean = False
     Do
       Try
        status_reader = New StreamReader("\\RASPI\pi\sprinkler\status.json")
        status_string = status_reader.ReadToEnd()
        status_reader.Close()
        wasSuccessful = True
       Catch ex As Exception
        retryCount += 1
       End Try
     Loop Until wasSuccessful = True OrElse retryCount >= 100
     'check if the statements were unsuccessful'
     If Not wasSuccessful Then
      Timer1.Enabled = False
      MessageBoxTimer(1)
      Timer1.Enabled = True
     End If
    status_file.Text = "status = " & status_string
   End Sub
Here is the link to the image of both programs running. The top VB.Net program shows the status file as "stat":[0] when the lower Python program shows that it has written "stat":[3]https://www.dropbox.com/s/2296hxqyj6hnum4/vb.jpg?dl=0