我不是程序员,但我试图通过给他们一些指导来帮助他们。我们不再拥有任何有关 msmq 的内部专业知识。我们正在尝试使用它来将一些功能与调度应用程序集成。
调度应用程序通过使用自定义构建的 dll 进行网络调用来启动作业。dll 调用 weburl。Web 应用程序将运行其任务并向网站发送有关其执行的任务的更新。网站将消息写入队列。调用该站点的 dll 正在监视队列中是否有带有分配给该作业的标签的消息。当它收到最终状态消息时,它会关闭。
我们每隔几个小时就会收到以下消息。我们每小时运行近 100 个使用此方法的作业。在底部列出的代码中,jobid 对应于消息队列中消息的标签。每个作业在开始时都会发出一个 jobid,并将使用它作为发送到该作业的 msmq 的每条消息的标签。
System.Messaging.MessageQueueException (0x80004005): Message that the cursor is currently pointing to has been removed from the queue by another process or by another call to Receive without the use of this cursor.
at System.Messaging.MessageQueue.ReceiveCurrent(TimeSpan timeout, Int32 action, CursorHandle cursor, MessagePropertyFilter filter, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
at System.Messaging.MessageEnumerator.get_Current()
Run Code Online (Sandbox Code Playgroud)
这是它的代码。
while ( running )
{
// System.Console.WriteLine( "Begin Peek" );
messageQueue.Peek();
//System.Console.WriteLine( "End Peek" ); …Run Code Online (Sandbox Code Playgroud) 我已经设法打印我的数据网格视图的内容,但它不适合纵向模式.我想在横向模式下打印它会.
我有我的数据集的代码来填充datagridview.
Private Sub print_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim query As String = "SELECT * FROM TBLusers"
Dim DA As New SqlDataAdapter(query, CN)
Dim DS As New DataSet
CN.Open()
DA.Fill(DS, "Users")
CN.Close()
DataGridView1.DataSource = DS.Tables("Users")
'DataGridView1.DataMember = "Users"
End Sub
Run Code Online (Sandbox Code Playgroud)
这是我猜的打印功能?我是从教程中得到的.
Private Sub printDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim dataGridViewImage As New Bitmap(Me.DataGridView1.Width, Me.DataGridView1.Height)
DataGridView1.DrawToBitmap(dataGridViewImage, New Rectangle(0, 0, Me.DataGridView1.Width, Me.DataGridView1.Height))
e.Graphics.DrawImage(dataGridViewImage, 0, 0)
End Sub
Run Code Online (Sandbox Code Playgroud)
这是打印预览.
Private Sub Button2_Click(ByVal …Run Code Online (Sandbox Code Playgroud) 以下查询确实解决了我的问题,但它似乎过于复杂.
问题是我有一个存储菜单选项(id,名称,描述和价格)的表.我还有一个会话变量,用于存储字典中的用户选择(存储id和数量).
我在下面制作的LINQ基本上计算了总结的一切的价值.它将表转换为字典,然后将价格乘以数量.
有一个更好的方法吗?
var prices = _db.MenuOptions
.Select(o => new { o.Id, o.Price })
.ToDictionary(o => o.Id, o => o.Price);
Session["price"] = prices
.Where(p => orderItems.Keys.Contains((int)p.Key))
.Sum(p => p.Value * orderItems[p.Key]);
Run Code Online (Sandbox Code Playgroud) 我刚刚学习Rx,并试图使用SerialPort从GPS设备实现"NMEA句子阅读器".事实上它的GPS数据对问题的重要性不大,所以让我们澄清NMEA格式由线组成,'$'符号代表新条目的开头,所以你得到的"句子"看起来类似于:
$[data for first line goes here]
$[data for second line goes here]
...
Run Code Online (Sandbox Code Playgroud)
连接SerialPort的DataReceived事件非常简单:
var port = new SerialPort("COM3", 4800);
var serialPortSource = Observable.FromEventPattern<
SerialDataReceivedEventHandler,
SerialDataReceivedEventArgs>
(
handler => port.DataReceived += handler,
handler => port.DataReceived -= handler
).Select(e => port.ReadExisting());
Run Code Online (Sandbox Code Playgroud)
这给出了一个IObservable<string>,但显然这里返回的字符串不一定是NMEA句子.例如,对于上面的示例数据,可以得到如下序列:
$[data for first line g
oes here]\r\n$[data for
second line goes here]
Run Code Online (Sandbox Code Playgroud)
如何将其正确地转换为一系列实际句子?在IEnumerable世界上,我可能会从一系列chars 开始,并编写一个类似于此的扩展方法:
public static IEnumerable<string> ToNmeaSentence(
this IEnumerable<char> characters
)
{
var sb = new StringBuilder();
foreach (var ch in …Run Code Online (Sandbox Code Playgroud) 环境:VS Enterprise 2015 Update 1,程序包管理器控制台主机版本3.3.0.167
重现的步骤:只需创建一个目标为.Net 4.5.2的新项目(例如控制台应用程序)(但也尝试使用其他.net版本).
当我安装nuget包时,下载包并且看似安装没有错误.但是,nuget不会添加对dll的引用.当查看packages文件夹时,事实证明没有.dlls解压缩,虽然.nupkg文件在那里并且没有损坏(我可以使用nuget包浏览器打开它并查看lib文件夹的内容).
知道是什么原因引起的吗?
包管理器控制台中的输出:
PM> install-package log4net -verbose
Attempting to gather dependencies information for package 'log4net.2.0.5' with respect to project 'ConsoleApplication4', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for package 'log4net.2.0.5' with DependencyBehavior 'Lowest'
Resolving actions to install package 'log4net.2.0.5'
Resolved actions to install package 'log4net.2.0.5'
For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
Adding package 'log4net.2.0.5' to folder 'c:\Projects\ConsoleApplication4\packages'
Added package 'log4net.2.0.5' …Run Code Online (Sandbox Code Playgroud) 我试图将一个新行插入两个表之间的关系.我编写了如下存储过程.
ALTER PROCEDURE InsertUserProfile
(
@UserID varchar(10),
@Pass varchar(50),
@Enabled int,
@Permission int,
@Rank int,
@FName varchar(50),
@LName varchar(50),
@Phone varchar(50),
@Email1 varchar(50),
@Email2 varchar(50)
)
AS
BEGIN TRANSACTION
INSERT INTO tbl_user_login VALUES (@UserID, @Pass, @Enabled, @Permission, @Rank)
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
INSERT INTO tbl_user_profile VALUES (@FName, @LName, @Phone, @Email1, @Email2)
IF @@ERROR <> 0
BEGIN
ROLLBACK
RETURN
END
COMMIT
Run Code Online (Sandbox Code Playgroud)
从这里遵循ASP.NET代码
SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnString"].ConnectionString);
SqlCommand cmd = new SqlCommand("dbo.InsertUserProfile", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserID", …Run Code Online (Sandbox Code Playgroud) 我有一种感觉,这可能是一个非常简单的扩展方法,我已经错过但我看不到它...
我基本上想要一个产生流的流,其中值在每个新值上缓慢递增.我希望节流/采样,而不是时间,而是"容忍".例如
var ob = Enumerable.Range(0, 30).ToObservable(); // 0, 1, 2, 3, 4, 5,....., 30
var largeMovingOb = ob.WhenChangedBy(10); // 0, 10, 20, 30
Run Code Online (Sandbox Code Playgroud)
当我有[1,4,20,33]等序列时,我希望在值变化超过最后一个的15时输出 - 这将导致:[1,20].如果价值变化为12将导致:[1,20,33]
这是否有内置的Rx扩展?理想情况下,它可以在所有数字类型上工作,而无需为每个类型编写重载
想象一下以下方法.
public async Task<IHttpActionResult> Get(int id)
{
List<PageVirtualServer> pageVirtualServer = await context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.ToListAsync();
List<StatusMessage> messages = await context.StatusMessages
.Where(x => pageVirtualServer.Any(
y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
Run Code Online (Sandbox Code Playgroud)
发生以下异常.."无法创建类型'xy'的常量值.在此上下文中仅支持基本类型或枚举类型."
但是当第一个查询嵌入第二个时 - 它确实有效,我不明白.
为什么这种方法有效,但第一种方法不起作用?
public async Task<IHttpActionResult> Get(int id)
{
List<StatusMessage> messages = await context.StatusMessages
.Where(x =>
context.PageVirtualServer
.Where(z => z.StatusPageId == id)
.Any(y => y.VirtualServerId == x.VirtualServerId))
.ToListAsync();
return Ok(messages);
}
Run Code Online (Sandbox Code Playgroud)
有人可以解释这种行为吗?
使用mongodb版本3.4.3,c#驱动程序(nuget MongoDb.Driver)版本2.4.3
给定一个具有Amount类型字段的类decimal,以及此类型的mongodb集合.查询数量大于或小于某个值的条目的集合会产生不正确的结果.将类型更改为"int"时,代码行为正确.在MongoDb中使用十进制字段时是否存在一些问题?
下面的示例代码说明了该问题.
class C
{
public int Id { get; set; }
public string Description { get; set; }
public decimal Amount { get; set; }
}
// assumes a locally installed mongodb
var connectionstring = "mongodb://localhost:27017/test";
var mongo = new MongoClient(connectionstring);
var db = mongo.GetDatabase("test");
db.DropCollection("testcollection");
db.CreateCollection("testcollection");
var collection = db.GetCollection<C>("testcollection");
// populate with 2 instances (amount 1 and amount 10)
collection.InsertMany(new[]
{
new C{Id = 1, Description = "small", Amount = 1}, …Run Code Online (Sandbox Code Playgroud) 我有三个对象A,B和C. C是A和B的子.C引用了A和B. A和B引用了C.我明白当A和B都引用C时删除后,C变为垃圾,将由GC收集.
public class A { public C Cr { get; set; } }
public class B { public C Cr { get; set; } }
public class C
{
public A Ar { get; set; }
public B Br { get; set; }
}
class Program
{
static void Main(string[] args)
{
var oa = new A();
var ob = new B();
var oc = new C();
oc.Ar = oa;
oc.Br = ob;
oa.Cr = …Run Code Online (Sandbox Code Playgroud) 我试图将以下XML文件解析为列表.不幸的是,它只返回一个元素
示例XML
<Titles>
<Book Title ="Love Story" Author= "Erich Segal" Year = "1999"/>
<Book Title ="Code Complete" Author= "Steve McConnel" Year = "2004"/>
<Book Title ="Rework" Author = "Jaso Fried" Year = "2010"/>
<Book Title ="Delivering Happiness" Author= "Tony Hseigh" Year = "2011"/>
</Titles>
Run Code Online (Sandbox Code Playgroud)
C#代码
public class BookInfo
{
public string Title { get; set; }
public string Author { get; set; }
public int Year { get; set; }
}
XDocument xmlDoc = XDocument.Load(strXMLPath);
var b = from device …Run Code Online (Sandbox Code Playgroud)