self.txtUsername is a getter/setter shortcut and safe for concurrency programming/multi-threaded.
_txtUsername is accessing the variable representing self.txtUsername that was created by the compiler for you where it stores the value and it is a direct access not safe in concurrency situations.
@property (weak, nonatomic) IBOutlet UITextField *txtUsername;
creates _txtUsername automatically with a setter and getter method like so:
You can use either if it is accessed or modified in one thread only and your example is a UIKit object then must be on the main thread only.