私は、次の方法があります。ヌルSqlCeTransaction
public void SaveReferenceUpdates(ReferenceUpdatesDataContract updates)
{
mTransaction = Connection.BeginTransaction();
try
{
// Do all the updates to get the database inline with the contract.
updates.UpdateFromContract();
// Do all the deletes to get the database inline with the contract.
updates.DeletesFromContract();
try{mTransaction.Commit();}
catch{throw;}
mTransaction = null;
}
catch (Exception e)
{
mTransaction.Rollback();
mTransaction = null;
throw;
}
}
(。私はすべてのログ・ステートメントを取り出し、これを読みやすくするために、いくつかの方法が崩壊した)
奇妙なことがあるのコミット・ステップに入ると(非常にランダムに)mTransaction
がnullになることがあります。 (これはランダムに起こるので、接続からトランザクションを取得するときにnullであるかどうかを確認できませんでした。)
このメソッドは2か所で呼び出されます。 1つは、ユーザーがmyアプリにログインしたときと、もう1つはユーザーが(ユーザーの入力から離れているタイマーに基づいて)一定時間非アクティブになったときです。
SqlCeTransaction
(mTransaction
)がnullになる原因について私は困惑しています。 (ヘルプは、null
を返すBeginTransactionについて何も言わない)
私はあなたが正しいと思います。私は、1つのスレッドだけが時間に書き込むことを確認する方法を見つける必要があります。 – Vaccano
おそらくトランザクションを 'UpdateFromContract()'と 'DeleteFromContract()'メソッドに渡すことができます。それから、 'mTransaction'はローカルvarになります。 –