C# 对象的事务?

2024-04-26

只是好奇,是否支持普通 C# 对象上的事务?喜欢

using (var transaction = new ObjectTransaction(obj))
{
  try
  {
    obj.Prop1 = value;
    obj.Prop2 = value;
    obj.Recalculate(); // may fire exception
    transaction.Commit(); // now obj is saved
  }
  except
  {
     transaction.Rollback(); // now obj properties are restored
  }
}

只是为了让答案更有用;-) 其他语言有类似的东西吗?

STM 更新:其声明如下:

atomic {
  x++;
  y--;
  throw;
}

将使 x/y 保持不变,包括链式方法调用。看起来像我所要求的。至少它非常有趣。我认为这已经足够接近了。另外,其他语言也有类似的东西,例如 Haskell STM。请注意,我并不是说它应该用于生产;-)


微软正在努力解决这个问题。了解软件事务内存。

  • STM.NET http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx
  • STM.NET 团队博客 http://blogs.msdn.com/stmteam/
  • 9 频道视频:STM.NET:谁。什么。为什么。 http://channel9.msdn.com/posts/Charles/STMNET-Who-What-Why/
  • STM论文 http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/index.htm

他们使用几种不同的语法:

// For those who like arrows
Atomic.Do(() => { 
    obj.Prop1 = value;
    obj.Prop2 = value;
    obj.Recalculate();
});

// For others who prefer exceptions
try { 
    obj.Prop1 = value;
    obj.Prop2 = value;
    obj.Recalculate();
}
catch (AtomicMarker) {
}

// we may get this in C#:
atomic { 
    obj.Prop1 = value;
    obj.Prop2 = value;
    obj.Recalculate();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 对象的事务? 的相关文章

  • Qt 图表和数据可视化小部件

    我已经安装了 Qt 5 7 来尝试 Qt 图表和 Qt 数据可视化 但我在 Qt Designer 和 Qt Creator 中都找不到新的小部件 有什么建议我应该做什么才能让新的小部件出现在设计器中 我今天遇到了完全相同的问题 默认情况下
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 警告 C4800:“int”:强制值为 bool“true”或“false”(性能警告)

    我的代码中有这个问题 bool CBase isNumber return id MID NUMBER bool CBase isVar return id MID VARIABLE bool CBase isSymbol return i
  • Dapper 在执行时挂起

    我有一个 IDb连接 sql UPDATE 表名 SET json json lastupdate SYSDATE WHERE id id var param new DynamicParameters param Add json jso
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • 当需要不同数量和类型的参数时如何创建操作委托列表

    我们有一组大约两打的类 它们继承自具有抽象 Validate 方法的基类 当然 每个类都有不同的验证需求 但它们之间的不同组合需要规则 因此 正如您可以想象的那样 这导致了大量代码重复 例如 A 类需要规则 1 3 6 和 9B 类需要规则
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • 如何将System.Windows dll添加到Visual Studio 2010 Express?

    我正在开发一个小型应用程序C and VS2010 as IDE with NET框架4 我想用CaptureSource类以便从笔记本电脑的网络摄像头捕获视频 为此我需要添加一个命名空间System Windows DependencyO
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • 从对列表创建邻接列表类型结构

    在 C 中 我有 class Pair int val1 int val2 我有一个来自以下来源的配对列表 List
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加

随机推荐

  • matplotlib 将 x 轴与缩放时自动缩放的 y 轴链接起来

    如何创建一堆具有链接 共享 x 轴的绘图 以便在缩放期间自动缩放所有 从属 绘图的 y 轴 例如 import matplotlib pyplot as plt fig plt figure ax1 fig add subplot 211
  • Firestore Flutter 选择不等于和不在[重复]中的位置

    这个问题在这里已经有答案了 是否可以在 flutter firestore 中 选择不等于的地方 类似于 SQL 的东西 SELECT FROM tbl WHERE id 2 选择不在哪里 类似于 SQL 的东西 SELECT FROM t
  • 如何在 Python 中让两只乌龟同时绘图?

    如何让两只乌龟同时画画 我知道如何让海龟画画以及如何画两只或更多 但我不知道如何让它们同时画画 请帮忙 这是使用计时器事件的简约示例 import turtle t1 turtle Turtle shape turtle t2 turtle
  • 如何获取Android股票投资组合中的Web应用程序每10秒NSE市场的股票价格?

    我正在开发股票投资组合的 Android 项目 我想获取每 10 秒运行股票市场的股票价格 以便我可以直接通过 Android 手机进行交易 所以如果你知道的话请帮助我 你的问题有很多变量 您需要以多快的速度访问库存 数据需要有多准确 您正
  • 独特的周期性工作在一段时间后停止执行

    我在我的应用程序中使用 WorkManager API 实现了独特的定期工作 该工作必须每 30 分钟检查一次在线资源 并在有未读通知时显示通知 是的 我需要定期工作 因为资源是 IMAP 服务器 因此我无法使用 FCM 通知 然而 正如我
  • NetBeans 无法在 Maven Web 应用程序上运行 package.json

    我使用 NetBeans 8 2 创建了一个新的 Maven Web 应用程序 我已经放置了一个工作package json文件内的Web Pages文件夹 所以它的路径是 C Users xxx Documents NetBeansPro
  • 如何在CI环境下运行postman的newman?

    我想跑newman在我的 CI 环境 solano ci 上 newman是一个运行邮递员集合中的请求的工具 我有一个newman脚本在我的package json 而且我也有一个npm start启动服务器的脚本localhost 300
  • Perl 中的 Substr,将 utf8 字符切成两半

    我正在尝试解决使用时的问题substr在 Perl v5 8 5 中 这是一个示例字符串 UTF 8 示例 编辑 ff if length hit gt post title gt 60 hit gt post title substr h
  • MySQL from_unixtime 在 2038 年 1 月 19 日之后?

    我们将日期存储为 Unix 时间戳 为了允许用户根据时区设置搜索特定日期 我们在查询中转换该时间戳 以确保搜索 2012 05 03 不会找到上一个 下一个的结果日期取决于用户设置的时区 即如果日期存储为2012 05 03 23 00 U
  • 禁用 jQuery UI 选项卡时遇到问题

    API 表示您无法禁用活动选项卡 我认为这是问题的症结所在 我在一个 UI 选项卡中有六个选项卡 在 ajax 调用根据用户对新 UI Accordion 选择的点击来填充所有选项卡的数据后 其中一个选项卡有时会是空的 每当用户进行新选择时
  • 如何在 Composable 中使用示例数据?

    在 XML 中 我们通过使用以下属性来使用样本名称 日期等 工具 样本 名字 有什么方法我们可以使用类似的示例数据 工具 样本在预览可组合项中 您可以使用 PreviewParameter https developer android c
  • 将简单的单色绘图图像转换为二维文本数组

    我正在尝试开发一种算法 将简单的单线图像 即迷宫 转换为文本二维数组 例如 下面的图像 它将被转换为以下文本数组
  • Solidity ParserError:预期为“;”但得到了“{”

    使用版本0 6 0 pragma solidity 0 6 0 contract Test function sendValue address payable recipient uint256 amount external bool
  • 一般从 boost::variant 转换为类型

    我有一个typedef boost variant
  • 正则表达式:将单词与侵入性符号相匹配

    我试图将所有 单词 与侵入性星号相匹配 包括开头和结尾 但没有其他标点符号 例如 我期待下面的七场比赛 相反 我得到了两个 text star tar s ar st r sta tar sta sta p re compile r b w
  • Android 风格特定的依赖树

    我的 Android 应用程序有多种风格 生产 Staging Review等以及Release and Debug构建类型 当我跑步时 gradlew app dependencies它自然地返回每个风味 构建类型的依赖树 生产发布 生产
  • CSS 中的重叠文本 - 如何更改它?

    我正在尝试更改 css 文件中的重叠元素 文本 一行文本 在常规浏览器中 在移动设备中显示为两行文本 重叠在一起 此更改适用于网站的移动版本 横向平板电脑的 media 部分 目前 标题 h2 文本在 iPad 平板电脑上重叠 来自 h2
  • 自定义菜单快捷键

    I am working on an application that has a Menu on top of it I want to use a different method for shortcut keys being thi
  • chrome和firefox中的getTime结果不同

    我需要转换Date反对timestamp 所以创建新的Date来自日期时间的对象和使用getTime 但它在 Chrome 和 Firefox 中产生不同的结果 这取决于时区 var date new Date 2013 08 26T14
  • C# 对象的事务?

    只是好奇 是否支持普通 C 对象上的事务 喜欢 using var transaction new ObjectTransaction obj try obj Prop1 value obj Prop2 value obj Recalcul