I'm honestly not sure. Something just messed up with:

Dim result As DialogResult = PrintDialog1.ShowDialog()

Which produced that error. To be honest your code threw a "Thread Error" because of cross threading but I know how to fix that error but yep I fixed that and now it's all done I hope