0

オブジェクトのコンストラクターを取得して、フィールドを何かに初期化し、30 秒間一時停止してから、後で別の値に設定しようとしています。

これが私のコードです:

namespace Practice
{
    public enum TransactionStatus { Pending, Complete }

    public class Transaction
    {
        private TransactionStatus status;

        public Transaction()
        {
            this.status = TransactionStatus.Pending;
            //(I'm trying to set this to TransactionStatus.Complete after 30 seconds. What do I do afterwards?)
        }

        // Here is the method to do it... Am I right to think that.status this must be reset this.status in the constructor?
        public TransactionStatus SetStatus()
        {
            // sleep for 30 seconds and then proceed.
            System.Threading.Thread.Sleep(3000);
            return TransactionStatus.Complete;
        }
    }
4

2 に答える 2

4

正直なところ、コンストラクターには入れません。私はメインコードでそれを行います:

TransactionStatus status = new TransactionStatus();

Thread.Sleep(3000);

status.SetStatus();

もちろん、それはプログラム全体をブロックします。それが望ましくない場合は、独自の関数を作成し、別のスレッドとして呼び出す必要があります。再びメインコードで。

そうは言っても、なぜあなたがこのようなことをしたいのか、私には本当に理解できません。

于 2011-11-20T08:50:10.060 に答える
3

toString()を使用していると言ったので、別の不正行為方法を次に示します。

private DateTime called;

public TranlationStatus()
{
    this.called = DateTime.Now; 
}

public ToString()
{
    if (this.called - DateTime.Now < new TimeSpan(0,0,20))
    {
        return TransationStatus.Pending.ToString();
    }
    else
    {
        return TransactionStatus.Complete.ToString();
    }
}
于 2011-11-20T08:55:51.120 に答える