Virtual pins only reading once in loop?

Hey guys, Blynk beginner here, I have a very simple issue I can’t seem to solve. Essentially, I am using virtual pins being read in a loop but I cannot seem to break out of this loop. Here is my code:

#include <SoftwareSerial.h>

SoftwareSerial DebugSerial(2, 3); // RX, TX

#define BLYNK_PRINT DebugSerial
#include <BlynkSimpleStream.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = “my auth”;

void setup()
{
_ // Debug console_
_ DebugSerial.begin(9600);_

_ // Blynk will work through Serial_
_ Serial.begin(9600);_
_ Blynk.begin(auth, Serial);_

_ pinMode(13,OUTPUT);_
}

_ BLYNK_WRITE(V1) //Button Widget is writing to pin V1_
{
_ int pinData = param.asInt(); _
_ do {_
_ digitalWrite(13,HIGH);_
_ delay(1000);_
_ digitalWrite(13,LOW);_
_ delay(1000);_
_ digitalWrite(13,HIGH);_
_ delay(1000);_
_ digitalWrite(13,LOW);_
_ delay(1000);_
_ }while(pinData != 0);_
}

_ BLYNK_WRITE(V2) //Button Widget is writing to pin V2_
{
_ int pinData2 = param.asInt(); _
_ do{_
_ digitalWrite(13,HIGH);_
_ delay(300);_
_ digitalWrite(13,LOW);_
_ delay(300);_
_ digitalWrite(13,HIGH);_
_ delay(300);_
_ digitalWrite(13,LOW);_
_ delay(300);_
_ }while(pinData2 != 0);_
}

void loop()
{ _
_ Blynk.run();

_ BLYNK_WRITE(V1);_
_ BLYNK_WRITE(V2);_

}

And essentially, my Blynk interface is two virtual push buttons, V1 and V2.
My issue is, if I press and hold down on one button, it works just fine and will loop indefinitely but once I let go (thereby switching the state to 0), my LED does not stop blinking, and I cannot change modes either. By this, I mean that if it starts blinking at a rate of 1 second (by pressing V1), it will not stop once I let go of V1, or when I’m pressing V2, and same goes the other way round.
So, I feel like the issue lies in the fact that my Virtual pins might only be read once in the whole loop? I’m still a bit unsure as to how they work as a whole so any feed back is appreciated. Thank you!

Yeah, that is not how it works.

Remove the BLYNK_WRITE from the loop. It’s a function to be used outside of it. I’m curious as to why it even compiled.

Second, don’t use delays. Try SimpleTimer. There is an example called “PushData” which shows how to use that.

for more visibility

Will try that!