Описание проблемы : Я занимаюсь разработкой приложения .Net с взаимодействием с SQL Server.Это означает, что конечный пользователь может создавать / обновлять / удалять записи на стороне SQL Server из приложения.
Недавно я попробовал свое приложение, когда понял, что пользовательский интерфейс останавливается на пару секунд, пока не завершатся транзакции между приложением и SQL Server, затем пользовательский интерфейс снова начинает работать.Конечно, это не очень хороший сценарий для конечного пользователя.Поэтому я начал применять многопоточность к своему приложению, но понял, что не могу предоставить доступ к форме, пока не закончится процесс сохранения.
Например: форма с одним элементом управления TextEdit, конечный пользователь вводит в него свое имя и другой элемент управления TextEdit, конечный пользователь вводит в него свой номер телефона, а затем нажимает кнопку сохранения.SQL для сохранения из моего приложения -
' Variable that holds the row number of the saved username
Dim SavedID as integer
' saving the username to the users table
SavedID = SQLControl.ExecScalar(String.format("INSERT INTO TABLE1 VALUES ({0});)", _
TextEdit1.text))
' saving the user phone number to the phone numbers table
SQLControl.ExecNonQuery(String.format("INSERT INTO TABLE2 VALUES ({0}, {1});)", _
SavedID, TextEdit2.text))
. Это означает, что конечный пользователь не должен иметь доступа до тех пор, пока сохранение не будет завершено, поскольку, если у него был доступ до выполнения второго SQLNonQuery
, данные могут испортиться..
PS: SQLControl.ExecScalar и SQLControl.ExecNonQuery являются пользовательскими подпрограммами.
PS: я уже применяю параметры к своему коду, но этот кодтолько для описания моей проблемы, для которой мне нужно найти решение.
Вопрос : как лучше всего справляться с таким сценарием, если мне нужно применить асинхронные задачисохранить данные на SQL Server?