我试图让Windsor为每个请求提供一个实例ISession,应该将其注入所有存储库
这是我的容器设置
container.AddFacility<FactorySupportFacility>().Register(
Component.For<ISessionFactory>().Instance(NHibernateHelper.GetSessionFactory()).LifeStyle.Singleton,
Component.For<ISession>().LifeStyle.Transient
.UsingFactoryMethod(kernel => kernel.Resolve<ISessionFactory>().OpenSession())
);
//add to the container
container.Register(
Component.For<IActionInvoker>().ImplementedBy<WindsorActionInvoker>(),
Component.For(typeof(IRepository<>)).ImplementedBy(typeof(NHibernateRepository<>))
);
Run Code Online (Sandbox Code Playgroud)
它基于StructureMap的帖子 http://www.kevinwilliampang.com/2010/04/06/setting-up-asp-net-mvc-with-fluent-nhibernate-and-structuremap/
但是,当运行它时,也会为它注入的每个对象创建一个新的Session.我错过了什么?
(仅供参考NHibernateHelper,为Nhib设置配置)
我们有以下代码(在本网站上找到此代码的想法),它将为方法"Do_SomeWork()"生成新线程.这使我们能够异步多次运行该方法.
代码是:
var numThreads = 20;
var toProcess = numThreads;
var resetEvent = new ManualResetEvent(false);
for (var i = 0; i < numThreads; i++)
{
new Thread(delegate()
{
Do_SomeWork(Parameter1, Parameter2, Parameter3);
if (Interlocked.Decrement(ref toProcess) == 0) resetEvent.Set();
}).Start();
}
resetEvent.WaitOne();
Run Code Online (Sandbox Code Playgroud)
但是我们想要使用ThreadPool而不是创建我们自己的新线程,这可能对性能有害.问题是我们如何修改上面的代码以使用ThreadPool,记住方法"Do_SomeWork"采用多个参数并且还有一个返回类型(即方法不是void).
此外,这是C#2.0.
我需要根据加速度计值获取Android设备的速度.我制作了一个允许我获取加速度计值的代码,然后使用公式计算速度:v = v0 + at.(矢量计算)
我的问题是我的速度只会增加而不会减少.我认为问题在于设备永远不会出现负加速度.
你能帮帮我吗?
我有一个应用程序,它有一个Spinner,我想要填充一些数字(4,8,12,16).我在strings.xml中使用上面提到的项创建了一个整数数组对象,将Spinner的条目设置为整数数组,当我运行应用程序时,我得到:
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): java.lang.NullPointerException
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:198)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:888)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:350)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.measureVertical(LinearLayout.java:464)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
04-19 23:38:48.016: ERROR/AndroidRuntime(10193): at android.view.View.measure(View.java:7965) …Run Code Online (Sandbox Code Playgroud) 我有一组数据点,每个数据点由字典描述.每个数据点的处理是独立的,我将每个数据点作为一个单独的作业提交给一个集群.每个数据点都有一个唯一的名称,我的集群提交包装器只调用一个脚本,该脚本获取数据点的名称和描述所有数据点的文件.然后该脚本从文件访问数据点并执行计算.
由于每个作业必须加载所有点的集合才能检索要运行的点,我想通过将描述点集的文件序列化为易于检索的格式来优化此步骤.
我尝试使用JSONpickle,使用以下方法,序列化描述文件的所有数据点的字典:
def json_serialize(obj, filename, use_jsonpickle=True):
f = open(filename, 'w')
if use_jsonpickle:
import jsonpickle
json_obj = jsonpickle.encode(obj)
f.write(json_obj)
else:
simplejson.dump(obj, f, indent=1)
f.close()
Run Code Online (Sandbox Code Playgroud)
字典包含非常简单的对象(列表,字符串,浮点数等),总共有54,000个键.json文件的大小约为20兆字节.
将此文件加载到内存大约需要20秒,这对我来说似乎很慢.我切换到使用具有相同确切对象的pickle,并发现它生成一个大约7.8兆字节的文件,并且可以在1-2秒内加载.这是一个重大的改进,但似乎加载一个小对象(少于100,000个条目)应该更快.除此之外,泡菜不是人类可读的,这对我来说是JSON的最大优势.
有没有办法使用JSON来获得类似或更好的加速?如果没有,你对构建这个有什么想法吗?
(将解决每个事件的文件简单地"切片"到一个单独的文件中并将其传递给在集群作业中运行数据点的脚本是正确的解决方案吗?看起来这可能会导致文件激增).
谢谢.
我正在尝试使用C#找到一种可靠的方法来激活/设置焦点到外部应用程序的窗口.目前我正在尝试使用以下Windows API调用来实现此目的:
SetActiveWindow(handle);
SwitchToThisWindow(handle, true);
Run Code Online (Sandbox Code Playgroud)
以前我也在ShowWindow(handle, SW_SHOWMAXIMIZED);其他2之前执行过,但是因为它导致了奇怪的行为而删除了它.
我当前实现的问题是偶尔会无法正确设置焦点.窗口将变为可见,但其顶部仍显示为灰色,就好像它没有聚焦一样.
有没有办法可靠地做到这一点,100%的时间工作,或不一致的行为是我无法逃避的副作用?如果您有任何建议或实施始终有效,请告诉我.
我总是遇到这两个字.
我知道当你谈论领域模型时,你谈论的是对象.
持久层是存储数据的层,例如.MySQL数据库.
但有人可以更彻底地解释这些话吗?
为什么称它为域名?为什么坚持?
谢谢!
考虑一下,我有以下3个类/接口:
class MyClass<T> { }
interface IMyInterface { }
class Derived : IMyInterface { }
Run Code Online (Sandbox Code Playgroud)
我希望能够MyClass<Derived>投入一个MyClass<IMyInterface>或反之亦然:
MyClass<Derived> a = new MyClass<Derived>();
MyClass<IMyInterface> b = (MyClass<IMyInterface>)a;
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试,我会遇到编译错误:
Cannot convert type 'MyClass<Derived>' to 'MyClass<IMyInterface>'
Run Code Online (Sandbox Code Playgroud)
我确信有一个很好的理由我不能这样做,但我想不出一个.
至于为什么我想这样做 - 我想象的场景是你理想地想要使用一个实例MyClass<Derived>以避免许多讨厌的演员,但是你需要将你的实例传递给接受的接口MyClass<IMyInterface>.
所以我的问题是双重的:
MyClass<Derived>同时仍然能够将其转换为MyClass<IMyInterface>?我可以从应用程序中可靠地启动ClickOnce应用程序的卸载吗?
换句话说,我想在其中一个表单上给用户一个大的"立即卸载我"按钮.当用户单击该按钮时,我想启动此应用程序的Windows卸载过程,并可能关闭该应用程序.
原因:我们正在使用ClickOnce应用程序,并希望使其像安装一样容易删除.我们不希望将它们发送到"添加或删除程序"的路径,并冒着迷失或分心的风险.
这可以做到可靠吗?
我正在尝试在按下Enter键时验证UI更改.UI元素是一个文本框,它是绑定到字符串的数据.我的问题是当Enter键为Up时数据绑定没有更新TestText.只有在按下弹出消息框的按钮时才会更新.
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window, INotifyPropertyChanged
{
String _testText = new StringBuilder("One").ToString();
public string TestText
{
get { return _testText; }
set { if (value != _testText) { _testText = value; OnPropertyChanged("TestText"); } }
}
public Window1()
{
InitializeComponent();
myGrid.DataContext = this;
}
private void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void onKeyUp(object sender, KeyEventArgs e)
{ …Run Code Online (Sandbox Code Playgroud) c# ×3
android ×2
.net ×1
asp.net-mvc ×1
casting ×1
clickonce ×1
covariance ×1
data-binding ×1
database ×1
deployment ×1
focus ×1
generics ×1
java ×1
json ×1
nhibernate ×1
oop ×1
parameters ×1
pickle ×1
python ×1
spinner ×1
threadpool ×1
windows ×1
winforms ×1
wpf ×1