私は C# プロジェクトに取り組んでおり、プロシージャ内で約 2 秒間少し一時停止したいと考えています。
実際に Invoke を使ってみたのですが、ご存じのとおり、クラス内でこの種の手続きを使用することはできません。
詳細については、私のコードを次に示します。
public class GenerateFile
{
public CSPFEnumration.ProcedureResult GenerateFaxFile(string Daftar_No, string Channelno, string NationalCode)
{
string script = string.Format(" DECLARE @RC INT " +
" DECLARE @Daftar_No INT = '{0}' " +
" DECLARE @hokm_type_code INT = 100 " +
" DECLARE @Channelno INT = '{1}' " +
" DECLARE @Id_No BIGINT = '{2}' " +
" EXEC @rc = [dbo].[Hokm_with_type] @Daftar_No, @hokm_type_code, @Channelno, @Id_No ",
Daftar_No,
Channelno,
NationalCode);
try
{
IEnumerable<string> commandStrings = Regex.Split(script, @"^\s*GO\s*$",
RegexOptions.Multiline | RegexOptions.IgnoreCase);
Connect();
foreach (string commandString in commandStrings)
{
if (commandString.Trim() != "")
{
using (var command = new SqlCommand(commandString, Connection))
{
command.ExecuteNonQuery();
}
}
}
DisConnect();
string FaxFilePath = InternalConstant.FaxFilePath + "\\" + string.Format("Lhokm{0}.tif", Channelno);
// I want to make a pause in here without locking UI
if (File.Exists(FaxFilePath))
return CSPFEnumration.ProcedureResult.Success;
else
return CSPFEnumration.ProcedureResult.Error;
}
catch (Exception ex)
{
InternalDatabase.GetInstance.InsertToPensionOrganizationException(ex);
return CSPFEnumration.ProcedureResult.Error;
}
}
}
私も await を試しましたが、適切な値を返すことができません。この手順で await を使用すると、await を終了する前に値が返されるためです。
編集:
Thread.Sleep
また、 UIがロックされるため、使用したくありません。助けてくれてありがとう。