Совместно используемые функции могут обращаться только к статическим / глобальным переменным, а также к переменным внутри области действия функции. Поэтому, если функция работает с любым количеством статических / общих ресурсов, вам необходимо синхронизировать вызовы этой функции.
В вашем случае, однако, не похоже, что вы работаете с какими-либо общими ресурсами, так что это не должно быть проблемой.
Вот пример, иллюстрирующий проблему:
private static myCounter As Integer = 0
public shared function IncreaseCount() As Integer
myCounter += 1
for i as integer = 0 to 10 million
//'do extensive work
next
return myCounter
End Function
Представьте, что вы вызываете функцию в первый раз и ожидаете, что она вернет число 1. Но из-за того, что функция была вызвана снова до того, как первый вызов функции вернул счетчик, была увеличена еще раз Это означает, что оба вызова функции возвращают 2 вместо 1 и 2. Все проблемы возникают, когда вы хотите, чтобы несколько вещей работали на одном и том же статическом ресурсе.