我有一个集合:
List<VPair<Item, List<Item>> dependencyHierarchy;
Run Code Online (Sandbox Code Playgroud)
对中的第一项是某个对象(项),第二项是第一项依赖的相同类型对象的集合.我希望得到一个List<Item>依赖顺序,所以没有依赖于第一个元素的项目等等(没有循环依赖!).
输入:
Item4 depends on Item3 and Item5 Item3 depends on Item1 Item1 does not depend on any one Item2 depends on Item4 Item5 does not depend on any one
结果:
Item1 Item5 Item3 Item4 Item2
谢谢.
解:
拓扑排序(感谢LoïcFévrier的想法)
和
我从.Net阅读了WebBrowser控件 - 如何注入Javascript,是否可以从c#winforms和其他许多人调用Javascript方法.这些示例是返回函数值或警报窗口(同步调用).我必须从事件处理程序(asyn调用)获取结果:
<script type="text/javascript">
window.onload = function() {
var o = new M.Build(document.getElementById("ZID"));
M.Events.observe(o, o.Events.Success, function() {
// I have to get some value!!
});
M.Events.observe(o, o.Events.Fault, function() {
// I have to get some value!!
});
}
</script>
Run Code Online (Sandbox Code Playgroud) 我有一个显示消息队列的表单,并且可以更改此消息的编号.真的我想在消息数量增加时闪烁标签(队列长度)以提高形式可用性.我应该实现自定义控件并使用其他线程或计时器来更改标签的颜色吗?有人实现了这么的功能吗?实现这样的行为的最佳解决方案(更少的资源和更少的性能降级)是什么?
解:
带有计时器的表单组件,可以限制每秒的动画数量,并对外部控件背景颜色实现淡出效果.
我参与的项目有一个面向架构的项目的文件/文件夹结构:
Root
|____ Node1
|____ Event Handlers
| |___ <all event handlers of project>
|____ Events
| |___ <all events of project>
|____ Request Handlers
| |___ <all request handlers of project>
|____ Requests
| |___ <all requests of project>
|____ ...
Run Code Online (Sandbox Code Playgroud)
从系统的架构角度来看(由开发团队提出)是明确的.
它是一个面向功能的结构,由设计师团队提出:
Root
|____ Feature #1
|____ Event Handlers
| |___ <all event handlers of Feature #1>
|____ Events
| |___ <all events of Feature #1>
|____ Request Handlers
| |___ <all request handlers of Feature #1>
|____ …Run Code Online (Sandbox Code Playgroud) 我正在解决表中某些对象之间的依赖关系.为了依赖它,我必须对对象做一些事情.例如,第一个对象不依赖于任何对象.第二个和第三个取决于第一个,依此类推.我必须使用 拓扑排序.有人可以显示实现的样本,所以在t-sql中排序.我有一张桌子:
create table dependency
(
DependencyId PK
,ObjectId
,ObjectName
,DependsOnObjectId
)
Run Code Online (Sandbox Code Playgroud)
我想得到
ObjectId ObjectName SortOrder
谢谢.
如何重写此查询不要使用UNION(UNION ALL)子句:
SELECT
c
FROM a
UNION
SELECT
c
FROM b
Run Code Online (Sandbox Code Playgroud)
预期结果(记录集应该相同):
SELECT
c
FROM ....
Run Code Online (Sandbox Code Playgroud) 我们知道代码:
using(myDisposable)
{
}
Run Code Online (Sandbox Code Playgroud)
相当于
try
{
//do something with myDisposable
}
finally
{
IDisposable disposable = myDisposable as IDisposable;
if(disposable != null)
{
disposable.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
和
lock(_locker)
{
}
Run Code Online (Sandbox Code Playgroud)
相当于
Monitor.Enter(_locker);
try
{
}
finally
{
Monitor.Exit(_locker);
}
Run Code Online (Sandbox Code Playgroud)
什么是相当于readonly字段?
readonly object _data = new object();
Run Code Online (Sandbox Code Playgroud) Java新手在这里.我正在使用第三方库给我一个函数,比如F(),其输出决定了我的逻辑.所以我需要它的结果继续我的代码.
问题是F()做了一些I/O,因此产生了一个线程来完成这个功能.他们给了我一些实现的回调,这些回调被调用来从线程返回状态/值.这很好,除了函数F()立即返回并且我的其余代码继续运行.我不希望这样,因为我必须根据F()的结果分配一些对象,所以我真的想等待F()真正完成.
这应该是人们经常遇到的问题.处理这个问题的正确方法是什么?这是我的设计或第三方库中的问题吗?或者我不太了解图书馆?
为了完整起见,我正在开发一个Android应用程序,该库是facebook sdk.该函数是单点登录函数authorize().虽然这是一个通用的问题,我认为最好在Java论坛中解决.
谢谢你的帮助. - P.
我在VB .NET中有一个代码:
Aggregate item In items Into Sum(item.Value)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我转换成C#吗?
我的问题是针对Windows环境中多线程的性能问题.在测试我的代码后,我得到的结果是增加线程数不会增加并行计算的性能,并且在计算之后变得更少.到底是怎么回事?是否有可能找出最佳线程数的公式:F(处理器,内存..)=?
我在我的数据库中使用索引视图.因此客户端应该有一些会话连接设置来调用它们.我使用ado.net连接,命令来调用存储过程.每次我必须调用存储过程时,我创建连接(我希望连接池允许我快速执行此操作)并执行命令将这些设置应用于当前连接.
// some code to create a new connection
//...
//...
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
using (var cmd = connection.CreateCommand())
{
cmd.CommandType = CommandType.Text;
cmd.CommandText =
@"
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET QUOTED_IDENTIFIER ON
SET NUMERIC_ROUNDABORT OFF";
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
其他想法:在每次调用存储过程之前添加这些设置:
command.CommandText = 'SET....';
command.CommandText += ' EXEC MyStroredProc @...';
Run Code Online (Sandbox Code Playgroud)
这个解决方案会导致一些性能问题,不是吗?
如果每次都必须创建新连接,我怎么能避免这么多额外的工作呢?如何自动应用这些设置?
解:
ALTER DATABASE [MyDB]
SET
ANSI_NULLS ON,
ANSI_PADDING ON,
ANSI_WARNINGS ON,
ARITHABORT ON,
CONCAT_NULL_YIELDS_NULL ON, …Run Code Online (Sandbox Code Playgroud) 在工作线程执行其工作时,什么代码更好地延迟(等待)主线程?
1)
int ticks = System.Environment.TickCount;
while (System.Environment.TickCount - ticks < milliseconds);
Run Code Online (Sandbox Code Playgroud)
2)
Thread.Sleep(milliseconds);
Run Code Online (Sandbox Code Playgroud)
3)
Your variant.
Run Code Online (Sandbox Code Playgroud)
谢谢.
添加
解:
我必须以编程方式启动Click Once应用程序,并且我使用URL来启动部署过程.我们知道Web浏览器应该是IE成功完成这项任务(FF + Addon似乎也解决了它).如果IE不是默认的Web浏览器,如何从.net应用程序启动IE?
也许可以将IE作为默认浏览器,然后在安装后切换回上一个浏览器.
c# ×6
.net ×2
.net-3.5 ×2
performance ×2
sorting ×2
t-sql ×2
winforms ×2
ado.net ×1
algorithm ×1
clickonce ×1
controls ×1
dependencies ×1
dom-events ×1
java ×1
javascript ×1
linq ×1
readonly ×1
sql ×1
usability ×1
vb.net ×1